常用按钮 这里常用的按钮就是我们常用的单选框,复选框之类的一些按钮。 都是一些普通Button的子类。
单选按钮,和一Win32的不大一样,因为java中有布局的概念,所以在一个特殊的布局中的单选按钮是一个组。这个特殊的布局就是:RadioGroup
。
看一下XML的定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <RadioGroup android:id ="@+id/radioGroup1" android:layout_width ="wrap_content" android:layout_height ="wrap_content" > <RadioButton android:id ="@+id/radioButton1" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="男" /> <RadioButton android:id ="@+id/RadioButton01" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="女" /> </RadioGroup >
就是在RadioGroup布局中的就是一个组,这里我们一般将这个布局获取到,然后判断child的选中。 实例:
1 2 3 4 5 6 7 8 9 10 int n = rg_gender.getChildCount();for (int i = 0 ; i < n ; i++){ RadioButton rad = (RadioButton) rg_gender.getChildAt(i); if (rad.isChecked()) { Toast.makeText(MainActivity.this , rad.getText(), Toast.LENGTH_SHORT).show(); break ; } }
这里需要注意,这段代码是在按钮事件里面的,所以我们上下文的时候我们不能只简单的写this,而要写上我们的布局。
开关按钮,其实之前我是不知道的,因为Windows下面是没有这个东西的,简单的说其实就是一个简单的开关(我其实我感觉这个东西基本不怎么用吧,用个复选框就可以替代了)。 用这个开关按钮实现一个布局的设计。 XML代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <ToggleButton android:id ="@+id/toggleButton1" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_alignRight ="@+id/button1" android:layout_below ="@+id/button1" android:layout_marginTop ="28dp" android:checked ="true" android:text ="ToggleButton" android:textOff ="纵向排列" android:textOn ="横向排列" /> <LinearLayout android:id ="@+id/LLayout" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_below ="@+id/toggleButton1" android:layout_marginTop ="14dp" android:orientation ="vertical" > <TextView android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="ceshi1" /> <TextView android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="ceshi2" /> </LinearLayout >
我们目的是要改变这个LinearLayout的排列方式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 togbtn = (ToggleButton) findViewById(R.id.toggleButton1); llayout = (LinearLayout) findViewById(R.id.LLayout); togbtn.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged (CompoundButton buttonView, boolean isChecked) { if (isChecked) { llayout.setOrientation(LinearLayout.VERTICAL); }else { llayout.setOrientation(LinearLayout.HORIZONTAL); } }
CheckBox 复选框,这个就和Windows下面的是一个样子的。这里我们用到List集合。首先我们先定义这么一个布局:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <LinearLayout android:id ="@+id/linearLayout1" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_alignTop ="@+id/radioGroup1" android:layout_marginLeft ="74dp" android:layout_toRightOf ="@+id/button1" android:orientation ="vertical" > </LinearLayout > <Button android:id ="@+id/button2" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_alignLeft ="@+id/linearLayout1" android:layout_alignTop ="@+id/toggleButton1" android:layout_marginTop ="22dp" android:text ="check" />
LinearLayout里面什么也没有,我们要动态的进行添加。
1 private List<CheckBox> checkBoxList = new ArrayList<CheckBox>();
一个集合,里面主要是用来存放我们的checkbox的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 llayout2 = (LinearLayout) findViewById(R.id.linearLayout1); btn2 = (Button) findViewById(R.id.button2); String[] strArray = {"1" ,"2" ,"3" }; for (int i = 0 ;i < 3 ; i++){ CheckBox ck = (CheckBox) View.inflate(this , R.layout.ui_checked, null ); ck.setText(strArray[i]); llayout2.addView(ck); checkBoxList.add(ck); } btn2.setOnClickListener(new OnClickListener() { @Override public void onClick (View v) { String str = "" ; for (CheckBox checkbox : checkBoxList) { if (checkbox.isChecked()) { str += checkbox.getText().toString(); } } Toast.makeText(MainActivity.this , str, Toast.LENGTH_SHORT).show(); } });
首先我们先获得布局,然后定义了一个数组,存放我们的内容,然后通过按钮点击事件进行一个一个检验,不要忘记加到布局之后还要加到集合,还有我发现我们将我们的变量放在监听器new的一个类的时候,这个对象就和我们之前普通的一个类一样,比如这个String如果不是在这个onClick的里面的话呢,每次是不会清空的。