分享

Android学习笔记之widget组件的基本介绍

 黎梓的技术小站 2012-05-27

简单的学习了一下androidwidget组件。以及它们的实现方式。

先说说最常用的button.

1. button 按纽

main.xml文件里建立一个idbutton的按扭

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了个对象并做出了具体的实现。设置当前的Activitytitle"点了一下"

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="
这里是Tab2balabalal...."/>

    <TextView android:id="@+id/view3"
        android:background="@drawable/green"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Tab3"/>

</FrameLayout>
组件基本就这么多,感觉学这个 要多琢磨,多尝试。才能学好。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约