Android 学习笔记(7)——ScrollView(竖直滚动条)/HorizontalScrollView(水平滚动条)

作者:夏至  欢迎转载,也请保留这段申明,谢谢


有没有发现,我们以前的学习都是用在一个手机屏幕框里的,没有上下滑动的?如果我们增加内容好像会被覆盖?没错,这次我们就来解决这个问题,让你像浏览网页一样,刷刷刷。。。。

当然,我们还要增加两个按键,一个返回顶部,一个跳到底部。这样是不是就像网页一样了。这里的布局,我们要说一下,因为linearlayout是包裹在scrollview里面的。这点要注意一下。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:id="@+id/scrollView">
  6. <LinearLayout
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:orientation="vertical" >
  10. <Button
  11. android:id="@+id/bottom"
  12. android:layout_width="match_parent"
  13. android:layout_height="wrap_content"
  14. android:textSize="24sp"
  15. android:text="跳到底部"
  16. />
  17. <TextView
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:text="实现翻滚效果"
  21. android:textSize="24sp"
  22. />
  23. <ImageView
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:src="@drawable/image1"
  27. />
  28. <ImageView
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:scaleType="fitCenter"
  32. android:src="@drawable/image2"
  33. />
  34. <ImageView
  35. android:layout_width="wrap_content"
  36. android:layout_height="wrap_content"
  37. android:scaleType="fitCenter"
  38. android:src="@drawable/shaorui"
  39. />
  40. <ImageView
  41. android:layout_width="wrap_content"
  42. android:layout_height="wrap_content"
  43. android:scaleType="fitCenter"
  44. android:src="@drawable/start"
  45. />
  46. <ImageView
  47. android:layout_width="wrap_content"
  48. android:layout_height="wrap_content"
  49. android:scaleType="fitCenter"
  50. android:src="@drawable/stop"
  51. />
  52. <Button
  53. android:id="@+id/top"
  54. android:layout_width="match_parent"
  55. android:layout_height="wrap_content"
  56. android:textSize="24sp"
  57. android:text="回到顶部"
  58. />
  59. </LinearLayout>
  60. </ScrollView>

如果用eclipse的话,可以新建一个xml文件,让它是scrollview即可,如果是studio的话,就老老实实的写吧。

好,接下来就是写主活动的程序了。这里的scrollview有连个方法可用。

我们可以直接利用ScrollView给我们提供的:fullScroll()方法:

    ·scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部

    ·scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

  1. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  2. private ScrollView scrollView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.linearlayout);
  7. Button top = (Button) findViewById(R.id.top);
  8. Button bottom = (Button) findViewById(R.id.bottom);
  9. scrollView = (ScrollView) findViewById(R.id.scrollView);
  10. top.setOnClickListener(this);
  11. bottom.setOnClickListener(this);
  12. }
  13. @Override
  14. public void onClick(View v) {
  15. switch (v.getId()) {
  16. case R.id.top:
  17. scrollView.fullScroll(ScrollView.FOCUS_UP);
  18. break;
  19. case R.id.bottom:
  20. scrollView.fullScroll(ScrollView.FOCUS_DOWN);
  21. break;
  22. }
  23. }

快去实践一下吧。

这里再扩充一下水平方向的。HorizontalScrollView,再把linearlayout 的方向改成水平,其他的都不变.

  1. <HorizontalScrollView
  2.     xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="wrap_content"
  5.     android:id="@+id/scrollView">
  6. <LinearLayout
  7. android:layout_width="match_parent"
  8.     android:layout_height="match_parent"
  9.     android:orientation="horizontal" >
  10. .....

当然了,MainActivity那里我们也要修改一下。就是把ScrollView 全部替换 HorizontalScrollView 即可。

效果如图:

  1. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  2. private HorizontalScrollView horizontalScrollView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.linearlayout);
  7. Button top = (Button) findViewById(R.id.top);
  8. Button bottom = (Button) findViewById(R.id.bottom);
  9. horizontalScrollView = (HorizontalScrollView) findViewById(R.id.scrollView);
  10. top.setOnClickListener(this);
  11. bottom.setOnClickListener(this);
  12. }
  13. @Override
  14. public void onClick(View v) {
  15. switch (v.getId()) {
  16. case R.id.top:
  17. horizontalScrollView.fullScroll(HorizontalScrollView.FOCUS_UP);
  18. break;
  19. case R.id.bottom:
  20. horizontalScrollView.fullScroll(HorizontalScrollView.FOCUS_DOWN);
  21. break;
  22. }
  23. }

效果丑到杠杠的,自行修改布局把。

如有错误,欢迎指出,如果喜欢,欢迎收藏!

来自为知笔记(Wiz)

时间: 2024-11-03 21:01:38

Android 学习笔记(7)——ScrollView(竖直滚动条)/HorizontalScrollView(水平滚动条)的相关文章

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在

Pro Android学习笔记(二九):用户界面和控制(17):include和merge

xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android"     androi

Android学习笔记(三九):资源resource(下)

在上一次学习笔记中,学习了XML文件的解析,实际上一些简单的activity属性,一些简单的信息,我们也可以放入xml文件中,可以直接放入res/vaules,由系统来进行解析,而无须使用XmlPullParser来自己分析. Dimension 用于字体大小,间距pading等等.常用的尺寸大小详细见Android 学习笔记(十四):Activity-AutoCompleteTextView,一般我们使用dip/dp和sp,因为和in(inch),mm,以及px(像素点)不同,它和物理屏幕尺寸

Android学习笔记(三七):再谈屏幕切换

切换需注意数据保存和恢复 在Android学习笔记(三六):横屏竖屏的切换中,我们配置了两个layout,一个用户普通的portrait,一个用户landsapce方式.如果只有一个layout,我们沿用上一个例子,删除了在layout-land/中的xml文件,则在屏幕切换时,会按照原来的排版,适配新的屏幕.程序我进行了简化,每按一次pick,就加一,用此来跟踪是否需要进行数据保存和恢复,如下: [java] view plaincopy public class Chapter19Test3

Pro Android学习笔记 ActionBar(1):Home图标区

 Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ? 综合 ? 共 3256字 ? 字号 小 中 大 ? 评论关闭 ActionBar在Android 3.0 SDK中为平板引入,在4.0中也可以在phone中使用.在title中提供类似tab和菜单的效果,有三种形式:Tabbed action bar,list action bar和standard action bar,我们将在小例子中进行示范. Home Icon 在Actio

【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android=

【转】Pro Android学习笔记(四):了解Android资源(下)

处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootname="tom"><--也可以是<root>,本次采用带参数的方式作为实验-->    <leaf>Hello from an elementtest.</leaf>   <leaf>Hello World!</lea

【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖排时,如下图显示: 屏幕上只显示一个fragment,点击列表上的数目,进入到简介的activity.下面介绍实现的方式. 设置横排和竖排的不同排版风格 在 Pro Android学习笔记(四):了解Android资源(下)的“资源和配置的变更”中,我们介绍了如何同资源文件夹名设置不同资源.缺省的l

Android学习笔记&#183;从零开始【一】

开始着手Android.和大多数初用Eclipse的人一样,有些手忙脚乱. 之前看Cocos2d时零星的看过:Cocos2d后来也被耽搁下来了:关于Cocos2d点此穿越,日后更新笔记. 现做下Android学习笔记,记录点滴. -->点击进入Android学习笔记导图.         -->19本Android经典教程+104个Github上火爆项目开源源码 加油! ●1 绑定的SDK工具包http://developer.android.com/sdk ●2 Application Na

Android学习笔记——关于onConfigurationChanged

从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidManifest.xml申明Activity的广告SDK都会要求加上注明这么一句属性: android:configChanges="orientation|keyboard|keyboardHidden" 通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChan