我给大家带来的是Andoird基本UI控件中的单选按钮和复选框;先说这一节的内容:单选按钮和复选框。
1。基本用法
2。事件处理;
3。自定义点击效果;
4。更改文本和选择框的相对位置;
5。修改文本和选择框之间的距离
其实这两个控件很多地方都差不多,除了单选多选,事件处理,其他都差不多!ListView上还有一个复选框错位的问题。我们将在ListView的章节中解决这个问题。好了,开始本节~本节的官方文档API:radio button;复选框;
1.基本用法和事件处理:
1)单选按钮
比如只能选择一个RadioButton,那么我们就需要把单选按钮放在RadioGroup按钮组中来实现单选功能!熟悉如何使用radiobuttons,一个简单的性别选择的例子:另外,我们可以为外部的RadioGroup设置orientation属性,然后设置radio button的排列方式,无论是垂直还是水平~
效果图:
PS:作者***是安卓5.0.1。和老版本的RadioButton相比,这里的RadioButton好看一点~
布局代码如下:
& ltlinear layout xmlns:Android = ”http://sche***s.android.com/apk/res/android”
xmlns:tools = ”http://sche***s.android.com/tools”
Android:id = ”@+id/linear layout 1 ″
Android:layout _ width = ”***tch _ parent & # 8221
Android:layout _ height = ”***tch _ parent & # 8221
Android:orientation = ”垂直”
工具:上下文= ”。主要活动”& gt
& lt带边框的
Android:layout _ width = ”wrap _ content & # 8221
Android:layout _ height = ”wrap _ content & # 8221
Android:text = ”请选择性别”
Android:textSize = ”23dp & # 8221
/>
& lt选项按钮组
Android:id = ”@+id/radio group ”
Android:layout _ width = ”wrap _ content & # 8221
Android:layout _ height = ”wrap _ content & # 8221
Android:orientation = ”水平”& gt
& lt单选按钮
Android:id = ”@+id/BTN ***n ”
Android:layout _ width = ”wrap _ content & # 8221
Android:layout _ height = ”wrap _ content & # 8221
Android:text = ”男”
Android:checked = ”真”/>
& lt单选按钮
Android:id = ”@+id/BTN wo***n ”
Android:layout _ width = ”wrap _ content & # 8221
Android:layout _ height = ”wrap _ content & # 8221
Android:text = ”女”/>
& lt/radio group >
& lt纽扣
Android:id = ”@+id/BTN post ”
Android:layout _ width = ”wrap _ content & # 8221
Android:layout _ height = ”wrap _ content & # 8221
Android:text = ”提交”/>
& lt/linear layout >
获取选定的值:
有两种方法,
第一个
是为RadioButton设置一个事件侦听器setOnCheckChangeListener。
示例代码如下:
radio group rad group =(radio group)findViewById(r . id . radio group);
//获取单选按钮值的第一个方法
//为radioGroup: setOnCheckedChanged()设置侦听器
rad group . setoncheckedchangelister(new oncheckedchangelister(){
@覆盖
public void onCheckedChanged(radio group group,int checkedId) {
radio button rad BTN =(radio button)findViewById(checked id);
toast . ***ke text(getApplicationContext(),“按钮组值已经改变,您选择了”+ radbtn.getText(),吐司。长度_长)。show();
}
});
操作效果图:
PS:另外有一点要切记,要为每个RadioButton添加一个id,不然单选功能会生效!!!PS:还有一点要记住,就是要给每个RadioButton加一个id,否则单选功能就要生效了!!!
第二个
方法是通过单击其他按钮来获取所选单选按钮的值。当然,我们也可以直接得到。这个看要求了~
示例代码如下:
Button BTN change =(Button)findViewById(r . id . BTN post);
radio group rad group =(radio group)findViewById(r . id . radio group);
//为radioGroup: setOnCheckedChanged()设置侦听器
BTN change . setonclicklistener(new OnClickListener(){
@覆盖
公共void onClick(视图v) {
for(int I = 0;我& ltrad group . get child count();i++) {
radio button rd =(radio button)rad group . get child at(I);
if (rd.isChecked()) {
toast . ***ke text(getApplicationContext(),“单击提交按钮获得您的选择:”+ rd.getText(),吐司。长度_长)。show();
打破;
}
}
}
});
操作效果图:
代码分析:
这里,我们为submit按钮设置了一个setOnClickListener事件**器,每次点击时遍历一次RadioGroup,确定哪个按钮被选中。我们可以通过以下方法获取RadioButton的相关信息!
getChildCount
( )获得按钮组中的单选按钮的数目;
getChinldAt
(i):根据索引值获取我们的单选按钮
isChecked
( ):判断按钮是否选中
2)复选框
例如,如果您选中一个框,您可以同时选择多个选项。至于获取选定的值,也有两种方式:1。向每个复选框添加一个事件:
setoncheckedchangelister 2。获取一个按钮,点击后判断每个复选框:is checked();
操作效果图:
实现代码:
公共类MainActivity扩展AppCompatActivity实现视图。OnClickListener,CompoundButton。OnCheckedChangeListener{
私有复选框cb _ one
私有复选框cb _ two
私有复选框cb _ three
私人按钮btn _ send
@覆盖
受保护的void onCreate(Bundle saved instancestate){
super . oncreate(savedInstanceState);
setContentView(r . layout . activity _ ***in);
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 . setoncheckedchangelister(this);
CB _ two . setoncheckedchangelister(this);
CB _ three . setoncheckedchangelister(this);
BTN _ send . setonclicklistener(this);
}
@覆盖
public void onCheckedChanged(compound button compound button,boolean b) {
if(compound button . is checked())toast . ***ke text(this,compoundButton.getText()。toString(),吐司。LENGTH_SHORT)。show();
}
@覆盖
公共void onClick(视图视图){
String choose = & # 8220”;
if(CB _ one . is checked())choose+= CB _ one . gettext()。toString()+“”;
if(CB _ two . is checked())choose+= CB _ two . gettext()。toString()+“”;
if(CB _ three . is checked())choose+= CB _ three . gettext()。toString()+“”;
Toast.***keText(这个,选择,吐司。LENGTH_SHORT)。show();
}
}
2.自定义点击效果
5.0以后的单选按钮和复选框虽然比老版本略好,但可能还是我们不喜欢或者需要的,需要我们自己点击效果!很容易实现。先写一个自定义的selctor资源,设置选中与否的切换画面~!
实施效果图如下:
PS:这里的素材原因有点小…
& lt?xml版本= ”1.0″编码= ”utf-8 ″?& gt
& lt选择器xmlns:Android = ”http://sche***s.android.com/apk/res/android” >
& lt项目
Android:state _ enabled = ”真”
Android:state _ checked = ”真”
Android:drawable = ”@ MIP ***p/IC _ checkbox _ checked ”/>
& lt项目
Android:state _ enabled = ”真”
Android:state _ checked = ”假”
Android:drawable = ”@ MIP ***p/IC _ checkbox _ nor***l ”/>
& lt/selector >
写完之后,我们有两种设置方式,或者一种!你看看就知道了~
①android:button属性设置为上面的selctor。
Android:button = ”@ draw able/rad _ BTN _ selector ”
②在style中定义一个属性,然后设置android style属性,将下面的代码添加到style中:
& ltstyle name = & # 8221MyCheckBox & # 8221parent = & # 8221@android:style/Widget。CompoundButton . CheckBox & # 8221& gt
& lt项目名称= ”安卓:按钮”& gt@ draw able/rad _ BTN _ selector </item >
& lt/style >
然后躺在那里:
style = & # 8221@ style/my checkbox ”
3.更改文本和选择框的相对位置。
这也很容易实现。还记得我们之前学习TextView时用的drawableXxx吗?要控制选择框的位置,只需两个!设置:
第一步。
Android:button = ”@ null & # 8221
第二步。
Android:drawable top = ”@ Android:draw able/BTN _ radio ”
当然,我们可以把drawableXxx换成自己喜欢的效果!
4.修改文本和选择框之间的距离。
有时,我们可能需要调整文本和选择框之间的距离,使它们看起来不那么拥挤。我们可以:
1.XML代码中的控件:使用Android:padding XXX = “xxx & # 8221来控制距离
2.用Java代码,好一点,动态计算paddingLeft!
示例代码如下:
Rb . setbuttondrawable(r . drawable . rad _ BTN _ selector);
int rb_paddingLeft = getResources()。getDrawable(r . MIP ***p . IC _ checkbox _ checked)。getIntrinsicWidth()+5;
rb.setPadding(rb_paddingLeft,0,0,0);
本节概述:
好了,单选按钮和复选框就这样了。如果有什么不对的,不好的,好的,请不吝指出,不胜感激。
本文来自吃鸡只用平底锅投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/645810.html