radiobutton控件(讲解python常用框架)

radiobutton控件(讲解python常用框架)

  其实这两个控件有很多地方都是类似的,除了单选和多选,事件处理,其他的都是类似的! 另外还有一个ListView上Checkbox的错位的问题,我们会在ListView那一章对这个问题进行 解决,好的,开始本节内容~ 本节官方文档API:RadioButton;CheckBox;

  1.基本用法与事件处理:

  1)RadioButton(单选按钮)

  效果图:

  PS:笔者的手机是Android 5.0.1的,这里的RadioButton相比起旧版本的RadioButton,稍微好看一点~

  布局代码如下:

  

  xmlns:tools=”

  android:id=”@+id/LinearLayout1″

  android:layout_width=”match_parent”

  android:layout_height=”match_parent”

  android:orientation=”vertical”

  tools:context=”.MainActivity” >

  

  android:layout_width=”wrap_content”

  android:layout_height=”wrap_content”

  android:text=”请选择性别”

  android:textSize=”23dp”

  />

  

  android:id=”@+id/radioGroup”

  android:layout_width=”wrap_content”

  android:layout_height=”wrap_content”

  android:orientation=”horizontal”>

  

  android:id=”@+id/btnMan”

  android:layout_width=”wrap_content”

  android:layout_height=”wrap_content”

  android:text=”男”

  android:checked=”true”/>

  

  android:id=”@+id/btnWoman”

  android:layout_width=”wrap_content”

  android:layout_height=”wrap_content”

  android:text=”女”/>

  

  

  android:id=”@+id/btnpost”

  android:layout_width=”wrap_content”

  android:layout_height=”wrap_content”

  android:text=”提交”/>

  

  获得选中的值:

  这里有两种方法,

  第一种是为RadioButton设置一个事件监听器setOnCheckChangeListener

  例子代码如下:

  RadioGroup radgroup=(RadioGroup) findViewById(R.id.radioGroup);

  //第一种获得单选按钮值的方法

  //为radioGroup设置一个监听器:setOnCheckedChanged()

  radgroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

  @Override

  public void onCheckedChanged(RadioGroup group, int checkedId) {

  RadioButton radbtn=(RadioButton) findViewById(checkedId);

  Toast.makeText(getApplicationContext(), “按钮组值发生改变,你选了” + radbtn.getText(), Toast.LENGTH_LONG).show();

  }

  });

  运行效果图:

  PS:另外有一点要切记,要为每个RadioButton添加一个id,不然单选功能会生效!!!

  第二种方法是通过单击其他按钮获取选中单选按钮的值,当然我们也可以直接获取,这个看需求~

  例子代码如下:

  Button btnchange=(Button) findViewById(R.id.btnpost);

  RadioGroup radgroup=(RadioGroup) findViewById(R.id.radioGroup);

  //为radioGroup设置一个监听器:setOnCheckedChanged()

  btnchange.setOnClickListener(new OnClickListener() {

  @Override

  public void onClick(View v) {

  for (int i=0; i < radgroup.getChildCount(); i++) {

  RadioButton rd=(RadioButton) radgroup.getChildAt(i);

  if (rd.isChecked()) {

  Toast.makeText(getApplicationContext(), “点击提交按钮,获取你选择的是:” + rd.getText(), Toast.LENGTH_LONG).show();

  break;

  }

  }

  }

  });

  运行效果图:

  代码解析: 这里我们为提交按钮设置了一个setOnClickListener事件监听器,每次点击的话遍历一次RadioGroup判断哪个按钮被选中我们可以通过下述方法获得RadioButton的相关信息!

  getChildCount( )获得按钮组中的单选按钮的数目;getChinldAt(i):根据索引值获取我们的单选按钮isChecked( ):判断按钮是否选中

  2)CheckBox(复选框)

  运行效果图:

  实现代码:

  public class MainActivity extends AppCompatActivity implements View.OnClickListener,CompoundButton.OnCheckedChangeListener{

  private CheckBox cb_one;

  private CheckBox cb_two;

  private CheckBox cb_three;

  private Button btn_send;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  cb_one=(CheckBox) findViewById(R.id.cb_one);

  cb_two=(CheckBox) findViewById(R.id.cb_two);

  cb_three=(CheckBox) findViewById(R.id.cb_three);

  btn_send=(Button) findViewById(R.id.btn_send);

  cb_one.setOnCheckedChangeListener(this);

  cb_two.setOnCheckedChangeListener(this);

  cb_three.setOnCheckedChangeListener(this);

  btn_send.setOnClickListener(this);

  }

  @Override

  public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

  if(compoundButton.isChecked()) Toast.makeText(this,compoundButton.getText().toString(),Toast.LENGTH_SHORT).show();

  }

  @Override

  public void onClick(View view) {

  String choose=“”;

  if(cb_one.isChecked())choose +=cb_one.getText().toString() + “”;

  if(cb_two.isChecked())choose +=cb_two.getText().toString() + “”;

  if(cb_three.isChecked())choose +=cb_three.getText().toString() + “”;

  Toast.makeText(this,choose,Toast.LENGTH_SHORT).show();

  }

  }

  2.自定义点击效果

  实现效果图如下:

  PS:这里素材的原因,有点小…

  <?xml version=”1.0″ encoding=”utf-8″?>

  

  

  android:state_enabled=”true”

  android:state_checked=”true”

  android:drawable=”@mipmap/ic_checkbox_checked”/>

  

  android:state_enabled=”true”

  android:state_checked=”false”

  android:drawable=”@mipmap/ic_checkbox_normal” />

  

  写好后,我们有两种方法设置,也可以说一种吧!你看看就知道了~

  ①android:button属性设置为上述的selctor

  android:button=”@drawable/rad_btn_selctor”

  ②在style中定义一个属性,然后通过android style属性设置,先往style添加下述代码:

  

  然后布局那里:

  style=”@style/MyCheckBox”

  3.改变文字与选择框的相对位置

  4.修改文字与选择框的距离

  示例代码如下:

  rb.setButtonDrawable(R.drawable.rad_btn_selctor);

  int rb_paddingLeft=getResources().getDrawable(R.mipmap.ic_checkbox_checked).getIntrinsicWidth()+5;

  rb.setPadding(rb_paddingLeft, 0, 0, 0);

  本节小结:

推荐阅读