由于手机屏幕的高度有限,在面对组件要显示多组信息时,ScrollView视图(滚动视图)可以有效的安排这些组件,浏览时可以自动的进行滚屏的操作。
ScrollView视图的定义格式如下:
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/myscroll"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/mylinear" > </LinearLayout> </ScrollView>
这里需要注意的是:滚动视图的使用形式和各个布局管理器的操作形式类似,唯一不同的是所有的布局管理器中均可以包含多个组件,而滚动视图中只能有一个组件。否则会报错,可以自行测试!
下面看一下MainActivity程序:
package org.lxh.demo; 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 Hello extends Activity { String str[] = { "1", "2", "3", "4", "5", "6", "7", "8", }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 生命周期方法 super.setContentView(R.layout.main); // 设置要使用的布局管理器 LinearLayout linear = (LinearLayout) super.findViewById(R.id.mylinear);// 取得组件 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);// 定义按钮的布局参数 for (int i = 0; i < this.str.length; i++) { Button btn = new Button(this);// 创建按钮组件 btn.setText(this.str[i]);// 设置文本 btn.setId(i); linear.addView(btn, param);// 增加组件 btn.setOnClickListener(new OnClickListenerImpl()); } } private class OnClickListenerImpl implements OnClickListener { public void onClick(View v) { switch (v.getId()) { case 0: Toast.makeText(Hello.this, "您选择了按钮1!", Toast.LENGTH_SHORT) .show(); break; case 1: Toast.makeText(Hello.this, "您选择了按钮2!", Toast.LENGTH_SHORT) .show(); break; case 2: Toast.makeText(Hello.this, "您选择了按钮3!", Toast.LENGTH_SHORT) .show(); break; case 3: Toast.makeText(Hello.this, "您选择了按钮4!", Toast.LENGTH_SHORT) .show(); break; case 4: Toast.makeText(Hello.this, "您选择了按钮5!", Toast.LENGTH_SHORT) .show(); break; case 5: Toast.makeText(Hello.this, "您选择了按钮6!", Toast.LENGTH_SHORT) .show(); break; case 6: Toast.makeText(Hello.this, "您选择了按钮7!", Toast.LENGTH_SHORT) .show(); break; case 7: Toast.makeText(Hello.this, "您选择了按钮8!", Toast.LENGTH_SHORT) .show(); break; case 8: Toast.makeText(Hello.this, "您选择了按钮8!", Toast.LENGTH_SHORT) .show(); break; default: break; } } } }
运行实例:
首先定义主布局文件main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <HorizontalScrollView android:layout_width="wrap_content" android:layout_height="150dp" android:layout_gravity="center_vertical" android:background="#AA444444" android:scrollbars="none" > <LinearLayout android:id="@+id/id_gallery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:orientation="horizontal" android:scrollbars="horizontal" > </LinearLayout> </HorizontalScrollView> </LinearLayout>
然后定义activity_index_gallery_item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="120dp" android:layout_height="130dp" android:background="@android:color/white" > <ImageView android:id="@+id/id_index_gallery_item_image" android:layout_width="80dp" android:layout_height="80dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_margin="5dp" android:scaleType="centerCrop" /> <TextView android:id="@+id/id_index_gallery_item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/id_index_gallery_item_image" android:layout_centerHorizontal="true" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:textColor="#ff0000" android:textSize="12dp" /> </RelativeLayout>
MainActivity程序如下:
package org.yayun.demo; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private LinearLayout mGallery; private int[] mImgIds; private LayoutInflater mInflater; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); mInflater = LayoutInflater.from(this); initData(); initView(); } private void initData()// 初始化数据 { mImgIds = new int[] { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, }; } private void initView()// 填充数据 { mGallery = (LinearLayout) findViewById(R.id.id_gallery); for (int i = 0; i < mImgIds.length; i++) { View view = mInflater.inflate(R.layout.activity_index_gallery_item,// 找到布局文件 mGallery, false); ImageView img = (ImageView) view .findViewById(R.id.id_index_gallery_item_image);// 找到图片控件 img.setImageResource(mImgIds[i]); img.setId(i); img.setOnClickListener(new OnClickListenerImpl()); TextView txt = (TextView) view .findViewById(R.id.id_index_gallery_item_text); txt.setText("some info "); mGallery.addView(view); } } private class OnClickListenerImpl implements OnClickListener{ public void onClick(View v) { switch (v.getId()) { case 0: Toast.makeText(MainActivity.this, "图片a", Toast.LENGTH_SHORT).show(); break; case 1: Toast.makeText(MainActivity.this, "图片b", Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(MainActivity.this, "图片c", Toast.LENGTH_SHORT).show(); break; case 3: Toast.makeText(MainActivity.this, "图片d", Toast.LENGTH_SHORT).show(); break; case 4: Toast.makeText(MainActivity.this, "图片e", Toast.LENGTH_SHORT).show(); break; default: break; } } } }
运行实例如下:
喜欢的童鞋点个赞,关注我吧!