CheckBox和RadioButton
阿新 • • 發佈:2019-01-10
CheckBox
CheckBox是複選框列表。
使用CheckBox步驟如下:
- 在xml中新增元素CheckBox;
- 在元素CheckBox中新增屬性android:onClick;
- 在對應的activity中實現對應的方法並相應。
xml的程式碼如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<CheckBox
android:id="@+ id/city_nj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickCheckboxes"
android:text="南京"
/>
<CheckBox
android:id="@+id/city_bj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/city_nj"
android:onClick="clickCheckboxes"
android:text="北京"
/>
<CheckBox
android:id="@+id/city_sh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/city_bj"
android:onClick="clickCheckboxes"
android:text="上海"
/>
</RelativeLayout>
注意:需為每一個CheckBox設定屬性android:onClick。
對應activity中的程式碼如下:
package com.example.sywyg.checkboxes_radiobutton_test;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Toast;
/**CheckBox練習,注意程式碼中的註釋內容
* @author sywyg
* @time 2015/4/7
*/
public class MainActivity extends ActionBarActivity {
private CheckBox cb_nj;
private CheckBox cb_bj;
private CheckBox cb_sh;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb_nj = (CheckBox)findViewById(R.id.city_nj);
cb_bj = (CheckBox)findViewById(R.id.city_bj);
cb_sh = (CheckBox)findViewById(R.id.city_sh);
}
//相應事件的方法必須是public修飾,返回型別為void,僅有一個引數(被點選的CheckBox,這裡用View)
public void clickCheckboxes(View view){
//判斷是選中,還是放棄選擇
boolean checked = ((CheckBox)view).isChecked();
//可以通過setChecked()設定預設選擇情況
switch (view.getId()){
case R.id.city_nj:
if(checked){
Toast.makeText(this,"您選擇了:" + cb_nj.getText().toString(),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"您放棄選擇:" + cb_nj.getText().toString(),Toast.LENGTH_SHORT).show();
}
break;
case R.id.city_bj:
if(checked){
Toast.makeText(this,"您選擇了:" + cb_bj.getText().toString(),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"您放棄選擇:" + cb_bj.getText().toString(),Toast.LENGTH_SHORT).show();
}
break;
case R.id.city_sh:
if(checked){
Toast.makeText(this,"您選擇了:" + cb_sh.getText().toString(),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"您放棄選擇:" + cb_sh.getText().toString(),Toast.LENGTH_SHORT).show();
}
break;
}
}
}
結果演示:
當然可以通過自定義設定框框和文字內容,例如android文件中的圖片:
是通過TextView和CheckBox(文字內容為空)組合實現的。
RadioButton
RadioButton是單選按鈕,使用者只能從一組選項當中選擇一個。對於每個選項可以並排(都顯示出來),或者通過spinner控制選項。
步驟和CheckBox一樣,這裡直接上程式碼:
xml程式碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<RadioGroup
android:id="@+id/rd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:id="@+id/rb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickRadioButton"
android:text="Yes"
/>
<RadioButton
android:id="@+id/rb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickRadioButton"
android:text="cen"
/>
<RadioButton
android:id="@+id/rb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickRadioButton"
android:text="No"
/>
</RadioGroup>
</RelativeLayout>
注意:RadioGroup是LinearLayout子類,需要指定屬性android:orientation值。
activity程式碼:
package com.example.sywyg.checkboxes_radiobutton_test;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.RadioButton;
import android.widget.Toast;
/**RadioButton練習,注意註釋
* @author sywyg
* @time 2015/4/7
*/
public class MainActivity extends ActionBarActivity {
private RadioButton rb_yes;
private RadioButton rb_cen;
private RadioButton rb_no;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rb_yes = (RadioButton)findViewById(R.id.rb1);
rb_cen = (RadioButton)findViewById(R.id.rb2);
rb_no = (RadioButton)findViewById(R.id.rb3);
//設定預設選項
rb_yes.setChecked(true);
}
//響應事件
public void clickRadioButton(View view){
boolean checked = ((RadioButton)view).isChecked();
if(checked){
//這裡換一種方式,不用switch了
Toast.makeText(this, "您選擇了:" + ((RadioButton)view).getText().toString(), Toast.LENGTH_SHORT).show();
}
}
}
結果演示:
遇到的問題:
- 在xml中不會提示你寫的根元素是否出錯,這點記住;
- 在遇到bug時,首先看準(務必仔細看)DDMS中提示哪錯了,在程式碼中找到提示的錯誤地方,仔細檢查。