简单的学习了一下android的widget组件。以及它们的实现方式。
先说说最常用的button.
1. button 按纽
在main.xml文件里建立一个id为button的按扭
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(button_listener); }
先绑定R.layout.main.然后用findViewById的方法创建了一个button 并用setOnClickListener的方法对其监听。 参数为botton_listener
对于这个参数 是这样定义的
private Button.OnClickListener button_listener = new Button.OnClickListener() { public void onClick(View v) { setTitle("点了一下"); } };
使用了匿名内部类 对OnClickListener接口new了个对象并做出了具体的实现。设置当前的Activity的title为"点了一下"。
2. TextView 标签(不可编辑的文本框)
这是其具体属性
<TextView android:id="@+id/text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp" 带比例的像素 android:textColor="#ffffff" android:padding="10dip" android:background="#cc0000" android:text="这里是TextView,你可以在这里输入需要显示的文字信息.." />
3. EditText 文本框 (可编辑的)
同上
4. CheckBox 多选框
<CheckBox android:id="@+id/plain_cb" android:text="Plain" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:id="@+id/serif_cb" android:text="Serif" android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="serif" /> <CheckBox android:id="@+id/bold_cb" android:text="Bold" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" /> 每一个CheckBox都有一个自己的id有自己的text 还可以设置自己的style 这个和html基本一样。
5. RadioGroup 单选
<RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/lunch" android:id="@+id/menu"> <RadioButton android:text="breakfast" android:id="@+id/breakfast" /> <RadioButton android:text="lunch" android:id="@id/lunch" /> <RadioButton android:text="dinner" android:id="@+id/dinner" /> <RadioButton android:text="all" android:id="@+id/all" /> </RadioGroup>
外面是一个RadioGroup组件 有他自己的ID,里面包含多个RadioButton 每一个都有自己的ID 选中事件也是isChecked().
6. Spinner 下拉列表
下拉列表是要有内容的。感觉这个组件的实现方式相对麻烦一些。有两种实现的方式。
(1)先定义几个字符串 存在数组里
private static final String[] mCountries = { "China" ,"Russia", "Germany", "Ukraine", "Belarus", "USA" };
spinner_c = (Spinner) findViewById(R.id.spinner_1); allcountries = new ArrayList<String>(); 定义一个ArrayList<String> for (int i = 0; i < mCountries.length; i++) { allcountries.add(mCountries[i]); 遍历数组把内容存在集合里 } aspnCountries = new ArrayAdapter<String>(this, 把集合放在ArrayAdapter对 android.R.layout.simple_spinner_item, allcountries); 象里并指定位置 aspnCountries .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner_c.setAdapter(aspnCountries);
调用ArrayAdapter对象的SetDropDownViewResource的方法
最后用spinner对象的setAdapter方法填加内容。
(2) 还可以在xml文件里预先定义数据
spinner_2 = (Spinner) findViewById(R.id.spinner_2); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.countries, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner_2.setAdapter(adapter);
<resources> <!-- Used in Spinner/spinner_2.java --> <string-array name="countries"> <item>China2</item> <item>Russia2</item> <item>Germany2</item> <item>Ukraine2</item> <item>Belarus2</item> <item>USA2</item> </string-array> </resources>
在res/values/目录下建立array.xml的文件 然后通过R.array.countries找到
7. AutoCompleteTextView自动完成文本
对于这个组件,我觉得挺牛的。目前只会一个简单的自动匹配功能
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, COUNTRIES); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.auto_complete); textView.setAdapter(adapter);
static final String[] COUNTRIES = new String[] { "China" ,"Russia", "Germany", "Ukraine", "Belarus", "USA" ,"China1" ,"China12", "Germany", "Russia2", "Belarus", "USA" };
把COUNTRIES数组的内容绑定进去
对应的xml
<AutoCompleteTextView android:id="@+id/auto_complete" android:layout_width="fill_parent" android:layout_height="wrap_content"/>
在输入ch的时候 里面与其匹配的内容就自动显示出来了。 这个挺强大的,理解的还不深刻。
8. DatePicker 日期选择器
DatePicker dp = (DatePicker)this.findViewById(R.id.date_picker); dp.init(2009, 5, 17, null);
用init方法进行初始化
<DatePicker android:id="@+id/date_picker" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 9. TimePicker
跟上面的DatePicker差不多
10. ScrollView 滚动视图
当主界面要显示的内容超过一个屏幕的时候 可以在xml文件布局容器外面加上
<ScrollView xmlns:android="http://schemas./apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content">
用这个组件把他包起来,这样就OK了。
11. ProgressBar 进度条
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="圆形进度条" /> <ProgressBar android:id="@+id/progress_bar" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="水平进度条" /> <ProgressBar android:id="@+id/progress_horizontal" style="?android:attr/progressBarStyleHorizontal" android:layout_width="200dip" android:layout_height="wrap_content" android:max="100" android:progress="50" android:secondaryProgress="75" /> </LinearLayout>
12. SeekBar 拖动条
<SeekBar android:id="@+id/seek" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:thumb="@drawable/seeker" android:progress="50"/>
android:thumb="@drawable/seeker" 可以设置拖动图表的图片
13. ImageView 图片视图
<ImageView android:id="@+id/imagebutton" android:src="@drawable/eoe" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
展示一张指定的图片 这个很简单
14. ImageSwitcher&Gallery(画廊) 切换图片
这个组件挺复杂的
<RelativeLayout xmlns:android="http://schemas./apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageSwitcher android:id="@+id/switcher" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" /> <Gallery android:id="@+id/gallery" android:background="#55000000" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:gravity="center_vertical" android:spacing="16dp" /> </RelativeLayout>
这是它的xml文件 它分为两部分 ImageSwitcher 和 Gallery 最终实现是屏幕上面展示一个大图,屏幕下面是一组可以滚动的图片。
代码比较复杂 这里就不介绍了
15. TabHost 切换面版
TabHost tabHost = getTabHost(); LayoutInflater.from(this).inflate(R.layout.tab_demo, tabHost.getTabContentView(), true); tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("tab1") .setContent(R.id.view1)); tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("tab2") .setContent(R.id.view2)); tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("tab3") .setContent(R.id.view3));
先getTabHost()获取一个TabHost,然后绑定模板,进行绑定每个标签的内容关联,看下模板文件
<FrameLayout xmlns:android="http://schemas./apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:id="@+id/view1" android:background="@drawable/blue" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="这里是Tab1里的内容。"/>
<TextView android:id="@+id/view2" android:background="@drawable/red" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="这里是Tab2,balabalal....。"/>
<TextView android:id="@+id/view3" android:background="@drawable/green" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Tab3"/>
</FrameLayout> 组件基本就这么多,感觉学这个 要多琢磨,多尝试。才能学好。
|