Android

Android开发指南第二篇《ScrollView和HorizontalScrollView 》

字号+ 作者:admin 来源:数码科技网 2016-11-18 14:27

打开公众号后台,已经有22位朋友关注了本公众号,虽然这是一个“可怜”的数字,但是只要有人阅读,楼主也会一直更新下去。 今天继续热身。今日楼主事情比较多,

请记住本站备用网址:炒外汇入门,收藏本站链接地址:http://www.fx968.com/article-20-1.html

人教版小学英语,新乡天气,彭靖雯

打开公众号后台,已经有22位朋友关注了本公众号,虽然这是一个“可怜”的数字,但是只要有人阅读,楼主也会一直更新下去。
今天继续热身。今日楼主事情比较多,来点简单轻松的东西。[PS:明天写第三方登录,多少还是有点含金量的,期待您的讨论]。
本文章对:http://blog.csdn.net/yayun0516/article/details/46275371一篇博客稍作修饰,加入了一些自己的风格。读者有兴趣可自行参考。
一、ScrollView
由于手机屏幕的高度有限,当普通布局放不下现实和的内容时,ScrollView视图(滚动视图)就会派上用场,因为数据可以往下滚动显示。
ScrollView视图的定义格式如下:

注意:

ScrollView中只能放置一个直接的孩子组件。比如上面ScrollView的孩子组件是线性布局,那么你添加任何孩子组件都会崩溃。巧记:ScrollView只能有独生子女。如果想添加更多的组件,可以在容器组件里面做文章。比如上面我在线性布局里面添加了一张图片。
接下来看看主活动的代码如下:
package com.itydl.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { String str[] = { "1", "2", "3", "4", "5", "6", "7", "8", }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); //拿到线性布局容器 LinearLayout linear = (LinearLayout) super.findViewById(R.id.mylinear);// 取得组件 //设置按钮的大小参数 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);// 定义按钮的布局参数 ,宽度充满父容器,高度包裹内容 for (int i = 0; i < str.length; i++) { //动态添加按钮 Button btn = new Button(this);// 创建按钮组件 btn.setText(this.str[i]);// 设置文本 //给每个按钮都设置id编号(可通过btn.getId()获取对应的id编号) btn.setId(i); //参数设置给按钮 btn.setLayoutParams(params); linear.addView(btn);// 线性布局增加孩子组件 btn.setOnClickListener(new OnClickListenerImpl()); } } private class OnClickListenerImpl implements OnClickListener { public void onClick(View v) { switch (v.getId()) { case 0: Toast.makeText(MainActivity.this, "您选择了按钮1!", Toast.LENGTH_SHORT) .show(); break; case 1: Toast.makeText(MainActivity.this, "您选择了按钮2!", Toast.LENGTH_SHORT) .show(); break; case 2: Toast.makeText(MainActivity.this, "您选择了按钮3!", Toast.LENGTH_SHORT) .show(); break; case 3: Toast.makeText(MainActivity.this, "您选择了按钮4!", Toast.LENGTH_SHORT) .show(); break; case 4: Toast.makeText(MainActivity.this, "您选择了按钮5!", Toast.LENGTH_SHORT) .show(); break; case 5: Toast.makeText(MainActivity.this, "您选择了按钮6!", Toast.LENGTH_SHORT) .show(); break; case 6: Toast.makeText(MainActivity.this, "您选择了按钮7!", Toast.LENGTH_SHORT) .show(); break; case 7: Toast.makeText(MainActivity.this, "您选择了按钮8!", Toast.LENGTH_SHORT) .show(); break; default: break; } } } }

运行结果如下:


可以看到,超出屏幕部分,可以下滑显示,垂直的ScrollView讲解完毕了,来看看水平的ScrollView。
二、HorizontalScrollView
看名称就清楚,当想在水平方向想放置更多的空间,屏幕宽度放不下的时候,它就派上用场了。因为用法非常简单,跟ScrollView一样只不过是个父容器,所以我结合上面的案例,把HorizontalScrollView放到了ScrollView里面。这样通过一个案例,同时学习了两个组件的使用,机智如我~
为了程序的可读性,直接上完整代码了:
总布局:

因为我要在HorizontalScrollView的基础上,继续嵌套控件,因此定义了一个item的布局:activity_index_gallery_item.xml

最后活动中的代码。稍作修改:

/*************************************省略导包****************************************/
public class MainActivity extends Activity { String str[] = { "1", "2", "3", "4", "5", "6", "7", "8", }; private int[] images = {R.drawable.home01,R.drawable.home02,R.drawable.home03,R.drawable.home04}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); //初始设置按钮 initBtn(); //初始设置HorizontalScrollView initHorizontalScrollView(); } private void initBtn() { //拿到线性布局容器 LinearLayout linear = (LinearLayout) super.findViewById(R.id.mylinear);// 取得组件 //设置按钮的大小参数 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);// 定义按钮的布局参数 ,宽度充满父容器,高度包裹内容 for (int i = 0; i < str.length; i++) { //动态添加按钮 Button btn = new Button(this);// 创建按钮组件 btn.setText(this.str[i]);// 设置文本 //给每个按钮都设置id编号(可通过btn.getId()获取对应的id编号) btn.setId(i); //参数设置给按钮 btn.setLayoutParams(params); linear.addView(btn);// 线性布局增加孩子组件 btn.setOnClickListener(new OnClickListenerImpl()); } } private void initHorizontalScrollView() { //HorizontalScrollView的孩子容器 LinearLayout mGallery = (LinearLayout) findViewById(R.id.id_gallery); //给孩子容器添加控件 for (int i = 0; i < images.length; i++) { //控件以布局的形式引入 View view = View.inflate(this, R.layout.activity_index_gallery_item, null); //设置图片资源数据 ImageView img = (ImageView) view .findViewById(R.id.id_index_gallery_item_image);// 找到显示图片的控件 img.setImageResource(images[i]); img.setId(i); TextView txt = (TextView) view .findViewById(R.id.id_index_gallery_item_text); txt.setText("我是图片"+i); mGallery.addView(view); } } private class OnClickListenerImpl implements OnClickListener { public void onClick(View v) { switch (v.getId()) { case 0: Toast.makeText(MainActivity.this, "您选择了按钮1!", Toast.LENGTH_SHORT) .show(); break; case 1: Toast.makeText(MainActivity.this, "您选择了按钮2!", Toast.LENGTH_SHORT) .show(); break; case 2: Toast.makeText(MainActivity.this, "您选择了按钮3!", Toast.LENGTH_SHORT) .show(); break; case 3: Toast.makeText(MainActivity.this, "您选择了按钮4!", Toast.LENGTH_SHORT) .show(); break; case 4: Toast.makeText(MainActivity.this, "您选择了按钮5!", Toast.LENGTH_SHORT) .show(); break; case 5: Toast.makeText(MainActivity.this, "您选择了按钮6!", Toast.LENGTH_SHORT) .show(); break; case 6: Toast.makeText(MainActivity.this, "您选择了按钮7!", Toast.LENGTH_SHORT) .show(); break; case 7: Toast.makeText(MainActivity.this, "您选择了按钮8!", Toast.LENGTH_SHORT) .show(); break; default: break; } } } }

运行效果如下:

还有一点提醒一下,您可以看到滑动HorizontalScrollView的时候,出现一个水平滚动条,如果想要去掉它,只需要在这个控件布局文件中添加一行代码:
android:scrollbars="none"
名称已经很显然了,即:去掉滑动条。

好啦,对于ScrollView和HorizontalScrollView 的大致介绍完毕,后续文章,会加入ScrollView和HorizontalScrollView 嵌套ListView,以及里面的一些技巧问题。
您看一看文章也就5-10分钟,笔者要花1个多小时才能完成,喜欢我的朋友在下面留言点赞,关注我一起讨论问题哈。

长按上方二维码,关注本公众号一起交流Android开发技术。
也可以关注我的CSDN博客与我联系,博客地址:http://blog.csdn.net/qq_32059827

相关文章
  • 额敏县第二轮全民健康免费体检进展有序

    额敏县第二轮全民健康免费体检进展有序

    2017-06-27 16:36

  • 华为去年在欧洲申请专利2390件 力压三星排第二

    华为去年在欧洲申请专利2390件 力压三星排第二

    2017-03-12 22:41

  • 印度智能手机市场:联想第二,小米第四,谁第一?

    印度智能手机市场:联想第二,小米第四,谁第一?

    2016-12-25 22:38

  • 长乐城市114排行榜(第二十八期)

    长乐城市114排行榜(第二十八期)

    2016-12-24 11:38

  • 印度智能手机市场:联想第二,小米第四,谁第一?

    印度智能手机市场:联想第二,小米第四,谁第一?

    2016-12-19 21:54

  • 印度智能手机市场:联想第二,小米第四,谁第一?

    印度智能手机市场:联想第二,小米第四,谁第一?

    2016-12-19 23:29

  • 像中国手机一样“围剿”印度?联想排第二小米进前五

    像中国手机一样“围剿”印度?联想排第二小米进前五

    2016-12-19 21:53

  • 像中国手机一样“围剿”印度?联想排第二小米进前五

    像中国手机一样“围剿”印度?联想排第二小米进前五

    2016-12-19 23:29

  • 像中国手机一样“围剿”印度?联想排第二小米进前五

    像中国手机一样“围剿”印度?联想排第二小米进前五

    2016-12-19 21:53

  • 印度智能手机市场:联想第二,小米第四,谁第一?

    印度智能手机市场:联想第二,小米第四,谁第一?

    2016-12-19 21:54

  • 印度智能手机市场:联想第二,小米第四,谁第一?

    印度智能手机市场:联想第二,小米第四,谁第一?

    2016-12-19 01:21

  • 印度智能手机市场:联想第二,小米第四,谁第一?

    印度智能手机市场:联想第二,小米第四,谁第一?

    2016-12-19 01:21