Android表单组件,单选,多选,下拉列表,日期选择,时间选择

Android中,也可以通过组件实现HTML表单中的各种功能,但这里不包含隐藏域的组件,因为没有必要。

常用的表单组件中,比较复杂的是选择类的组件,这里可以使用以下的组件实现:单选,多选,下拉列表,日期选择,时间选择的功能。

一、单选,多选:



    

    

        

        
    

单选应该还支持默认选中功能。

但要注意,这样写有bug,如果写上为true,则永远无法再进行切换,一直为true

因此建议在程序中进行默认选中的设置。

RadioGroup
        android:id="@+id/radio"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
public class MainActivity extends Activity {

	private RadioGroup radio;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 设置所使用的布局界面
		setContentView(R.layout.activity_main);

		radio = (RadioGroup) findViewById(R.id.radio);

		// 可以通过check()方法来设置选中某一个单选,但要传递该单选按钮的id值.
		// 如果为每个单选按钮设置id, 比较麻烦,因此这里通过 按钮的position下标,直接取得按钮,再通过getId()取得id值来设置.
		radio.check(radio.getChildAt(0).getId());

	}
}

如果选项不是写死的形式,而是通过传递的集合数据动态生成的,可以通过程序来进行选项的建立。

public class MainActivity extends Activity {

	private RadioGroup radio;

	private String[] allValues = { "男", "女", "未知" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 设置所使用的布局界面
		setContentView(R.layout.activity_main);

		radio = (RadioGroup) findViewById(R.id.radio);

		// 可以通过check()方法来设置选中某一个单选,但要传递该单选按钮的id值.
		// 如果为每个单选按钮设置id, 比较麻烦,因此这里通过 按钮的position下标,直接取得按钮,再通过getId()取得id值来设置.
		// radio.check(radio.getChildAt(0).getId());

		// 动态为单选按钮组加入选项
		// 循环数组或集合,建立单选按钮
		for (int i = 0; i < allValues.length; i++) {
			RadioButton button = new RadioButton(this);
			button.setText(allValues[i]);
			button.setTextColor(Color.BLACK);
			radio.addView(button);
		}
	}}

多选框使用方法与单选基本相同,只不过换成CheckBox

这里没有CheckBoxGroup,可以直接使用LinearLayout替代之前的RadioGroup



        

        

        

        

        
    

Android表单组件,单选,多选,下拉列表,日期选择,时间选择_第1张图片

二、Spinner下拉列表

下拉列表中的数据不能直接加入,可以通过XML来进行固定的配置,或使用Adpater来动态加入。

写死的数据,可以打开values.xml,来加入一段配置。

//这里的@array的数据就是在strngs.xml中声明的String Array数组

如果想动态生成数据,也要通过程序完成,需要建立一个ArrayAdapter的类,来转换传入的List集合或String[]数据。

// 取得Spinner组件
		spinner = (Spinner) findViewById(R.id.spinner);
		// 根据数据,建立适配器
		adapter = new ArrayAdapter(this,
				android.R.layout.simple_spinner_item, allAreaValues);
		// 设置选项弹出后的显示样式
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		spinner.setAdapter(adapter);


//如果不想使用系统自带的显示样式,也可以自己在res/layout中声明一个自定义的TextView的样式。



// 根据数据,建立适配器
		adapter = new ArrayAdapter(this,
				R.layout.my_spinner_item, allAreaValues);

Android表单组件,单选,多选,下拉列表,日期选择,时间选择_第2张图片

三、日期时间选择器、滚动面板

日期选择器的设置



    

但这时,内容已经超出了屏幕范围,因此需要加入一个滚动面版,来实现屏幕滚动的功能。

滚动面版中要求只能有一个子节点。

因此这里要将滚动面版ScrollView加入到最外面,作为根节点来使用



    

同时,里面的LinearLayout的高度,必须设置成为wrap_content

如果想使用水平滚动支持,可以加入水平滚动面版

还可以取消滚动条的显示

android:scrollbars="none" >

Android表单组件,单选,多选,下拉列表,日期选择,时间选择_第3张图片

时间选择也可以通过TimePicker来实现。










你可能感兴趣的:(Android)