Android 自学之列表选择框Spinner
时间:2014-05-28 10:06:41
收藏:0
阅读:315
列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框。
Spinner是ViewGroup的间接子类,因此他也可作为容器使用。
Spinner支持的常用XML属性和说明:
XML属性 | 说明 |
android:prompt | 设置该列表框的提示 |
android:entries | 使用数组资源设置该下拉列表框的列表项目 |
啥都不说了我们看看代码:
layout/main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <!-- 定义了一个Spinner组件, 8 指定该显示该Spinner组件的数组 --> 9 <Spinner 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" 12 android:entries="@array/books" 13 /> 14 </LinearLayout>
上面代码里面的android:entries="@array/books" 是指向的vlaues/Array.xml,在这个文件里面,定义了列表项
values/Array.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string-array name="books"> 4 <item >绝世唐门</item> 5 <item >莽荒记</item> 6 <item >java</item> 7 <item >javascript</item> 8 </string-array> 9 10 </resources>
java类里面就只做了一个展示的功能:
com.example.spinner.SpinnerTest.java
1 package com.example.spinner; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.support.v7.app.ActionBar; 5 import android.support.v4.app.Fragment; 6 import android.os.Bundle; 7 import android.view.LayoutInflater; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.View; 11 import android.view.ViewGroup; 12 import android.os.Build; 13 14 public class SpinnerTest extends ActionBarActivity { 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.main); 20 } 21 }
效果图:(点击了文本框后就会跳出这些列表项)
在网上看到了一个实例:不存储列表项的Spinner(顺便练习了下)
layout/main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <TextView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:text="选择您最喜欢的数字:" 11 /> 12 <Spinner 13 android:id="@+id/test" 14 android:layout_width="fill_parent" 15 android:layout_height="wrap_content" 16 /> 17 </LinearLayout>
java类:com.example.spinner.SpinnerTest
1 package com.example.spinner; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.support.v7.app.ActionBar; 5 import android.support.v4.app.Fragment; 6 import android.annotation.SuppressLint; 7 import android.os.Bundle; 8 import android.view.LayoutInflater; 9 import android.view.Menu; 10 import android.view.MenuItem; 11 import android.view.View; 12 import android.view.ViewGroup; 13 import android.widget.BaseAdapter; 14 import android.widget.ImageView; 15 import android.widget.LinearLayout; 16 import android.widget.Spinner; 17 import android.widget.TextView; 18 import android.os.Build; 19 20 public class SpinnerTest extends ActionBarActivity { 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.main); 26 BaseAdapter ba = new BaseAdapter() { 27 28 @Override 29 public View getView(int arg0, View arg1, ViewGroup arg2) { 30 //创建一个LinearLayout,并向其中添加2个组件 31 LinearLayout line = new LinearLayout(SpinnerTest.this); 32 line.setOrientation(0); 33 34 ImageView image = new ImageView(SpinnerTest.this); 35 image.setImageResource(R.drawable.ic_launcher); 36 37 TextView text = new TextView(SpinnerTest.this); 38 text.setText(arg0 + ""); 39 text.setTextSize(20); 40 line.addView(image); 41 line.addView(text); 42 return line; 43 } 44 45 @Override 46 public long getItemId(int arg0) { 47 return 0; 48 } 49 50 @Override 51 public Object getItem(int arg0) { 52 return null; 53 } 54 55 @Override 56 public int getCount() { 57 //指定一共包含10个选项 58 return 10; 59 } 60 }; 61 62 Spinner spinner = (Spinner)findViewById(R.id.test); 63 spinner.setAdapter(ba); 64 } 65 }
运行后的效果图:
评论(0)