android:id="@+id/btn_2" android:layout_width=“match_parent” android:layout_height=“wrap_content” android:layout_marginTop="@dimen/dimen_20" android:background="@drawable/bg_btn_frame_gradient" android:padding="@dimen/dimen_10" android:text=“背景色渐变的Button” android:textAllCaps=“false” android:textColor="@color/white" android:textSize="@dimen/text_size_18" /> android:id="@+id/btn_3" android:layout_width=“match_parent” android:layout_height=“wrap_content” android:layout_marginTop="@dimen/dimen_20" android:background="@drawable/bg_btn_selector_bg" android:onClick=“btn3OnClick” android:padding="@dimen/dimen_10" android:textAllCaps=“false” android:text=“带按下效果的Button” android:textColor="@color/white" android:textSize="@dimen/text_size_18" /> 咱们看运行效果 xml小结 此时已经完成了上面的效果图。 我们将 Button 的 android:background 属性设置为该 drawable 资源即可轻松实现按下 按钮时不同的按钮颜色或背景 btn_2因为直接使用drawable,并且未使用selector。所以无点击效果。不管点击还是未点击**「始终显示渐变色」**。 StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector > btn_3使用了selector,对item标签下android:state_pressed进行不同状态的设置背景色和圆角。根据控件是否被按下展示(color_FF773D/color_188FFF) 交互事件 Button的核心还是在于和用户的交互,否则使用TextView即可。 1.Activity 实现 View.OnClickListener方法 public class ButtonActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_button);//加载布局文件 initViewButton(); } private void initViewButton(){ btn_1 = findViewById(R.id.btn_1); btn_1.setonClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_1: Toast.makeText(this,“btn_1点击事件”,Toast.LENGTH_SHORT).show(); break; default: break; } } } 2.在布局文件中声明 给button添加 android:onClick="btn3OnClick"属性 在activity中添加对应名称的方法,满足以下条件 方法的修饰符是 public; 返回值是 void 类型; //不需要关联控件 public void btn3onClick(View view){ Toast.makeText(this,“btn_3点击事件”,Toast.LENGTH_SHORT).show(); } 3.匿名内部类实现 附送一个长按匿名内部类,需要注意的是**「onLongClick」返回「false」会继续「执行onClick事件」**,如果返回true,则不执行onClick事件。 btn_2.setonClickListener(new View.onClickListener() { @Override public void onClick(View v) { Toast.makeText(ButtonActivity.this,“btn_2点击事件”,Toast.LENGTH_SHORT).show(); } }); btn_2.setonLongClickListener(new View.onLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(ButtonActivity.this,“btn_2长按点击事件”,Toast.LENGTH_SHORT).show(); return false; } }); 4.内部类实现 //使用 btn_1.setonClickListener(new MyonClickListener()); //内部类实现OnClickListener接口 class MyOnClickListener implements View.OnClickLis tener{ @Override public void onClick(View v) { Toast.makeText(ButtonActivity.this,“btn_1点击事件MyOnClickListener”,Toast.LENGTH_SHORT).show(); } } 交互事件小结 Button的setOnClickListener优先级比xml中android:onClick高,如果同时设置点击事件,只有setOnClickListener有效。 TextView也可以实现onClick事件,如果部分Button使用麻烦可以考虑使用TextView来代替。 Button显示字母大写 解决方案:设置属性android:textAllCaps="false"即可解决 Button设置backgroud无效 解决方案:默认的颜色设置来自于res/values/themes.xml。 将里面的主题parent="Theme.MaterialComponents.DayNight.DarkActionBar"改为(其他主题也可以)parent=“Theme.MaterialComponents.DayNight.DarkActionBar.Bridge”。 Button点击文字变色 方法一 定义一个drawable文件,代码如下: 方法二 1.首先你要在你的color文件下加入几个你需要的色值,注意不同的是不是一般的color标签,而是drawable标签,代码如下: #ff0000 #000000 #FFFFFF 2.定义一个drawable文件,就和正常的selector文件差不多,唯一的区别就是把drawable字段变成color在里面引入你刚刚定义的颜色,代码如下: android:color="@drawable/drawable_color_black" /> 把drawable文件设置为textColor选项就可以了。 以上就是本文Button的全部内容,咱们下面看看他的子类。 RadioButton =========== RadioButton 单选按钮,继承自 Button,所以拥有 Button 的所有公开属性和方法RadioButton 只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked(设置或获取 RadioButton 的选中状态)。 实例 – 在布局文件中添加RadioButton android:id="@+id/rb_red" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“红色” android:textColor="@color/color_ff0000" android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 rb_red.setonCheckedChangeListener(new CompoundButton.onCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //isChecked用于判断 RadioButton 是否选中 if(isChecked){ MLog.e(“选中”); }else{ MLog.e(“未选中”); } } }); 「isChecked」 用于判断RadioButton是否选中。 咱们看运行效果 然后你会发现 只能选中不能取消,说好的单选按钮,怎么成了选择按钮,并且效果图上同时选择了两种颜色。这只能说明我们实现了单选按钮,而不能说我们实现了单选功能。 实现单选功能的方案 1.通过代码进行判断来取消其他按钮的选中状态。 2.引入RadioGroup RadioGroup 单选按钮组 RadioGroup 用于将几个 RadioButton 组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中。 RadioGroup 初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck() 方法。 如果想改变 RadioGroup 里 RadioButton 的排列方式,可以使用属性 android:orientation。 在布局文件中添加控件 新增1个RadioGroup和2个RadioButton,要为每个 RadioButton 添加一个 id,不然单选功能会生效 android:id="@+id/rg" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:layout_gravity=“center_horizontal” android:orientation=“horizontal”> android:id="@+id/rb_liangpi" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“凉皮” android:textSize="@dimen/text_size_18" /> android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:id="@+id/btn_2"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop="@dimen/dimen_20"
android:background="@drawable/bg_btn_frame_gradient"
android:padding="@dimen/dimen_10"
android:text=“背景色渐变的Button”
android:textAllCaps=“false”
android:textColor="@color/white"
android:textSize="@dimen/text_size_18" />
android:id="@+id/btn_3" android:layout_width=“match_parent” android:layout_height=“wrap_content” android:layout_marginTop="@dimen/dimen_20" android:background="@drawable/bg_btn_selector_bg" android:onClick=“btn3OnClick” android:padding="@dimen/dimen_10" android:textAllCaps=“false” android:text=“带按下效果的Button” android:textColor="@color/white" android:textSize="@dimen/text_size_18" /> 咱们看运行效果 xml小结 此时已经完成了上面的效果图。 我们将 Button 的 android:background 属性设置为该 drawable 资源即可轻松实现按下 按钮时不同的按钮颜色或背景 btn_2因为直接使用drawable,并且未使用selector。所以无点击效果。不管点击还是未点击**「始终显示渐变色」**。 StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector > btn_3使用了selector,对item标签下android:state_pressed进行不同状态的设置背景色和圆角。根据控件是否被按下展示(color_FF773D/color_188FFF) 交互事件 Button的核心还是在于和用户的交互,否则使用TextView即可。 1.Activity 实现 View.OnClickListener方法 public class ButtonActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_button);//加载布局文件 initViewButton(); } private void initViewButton(){ btn_1 = findViewById(R.id.btn_1); btn_1.setonClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_1: Toast.makeText(this,“btn_1点击事件”,Toast.LENGTH_SHORT).show(); break; default: break; } } } 2.在布局文件中声明 给button添加 android:onClick="btn3OnClick"属性 在activity中添加对应名称的方法,满足以下条件 方法的修饰符是 public; 返回值是 void 类型; //不需要关联控件 public void btn3onClick(View view){ Toast.makeText(this,“btn_3点击事件”,Toast.LENGTH_SHORT).show(); } 3.匿名内部类实现 附送一个长按匿名内部类,需要注意的是**「onLongClick」返回「false」会继续「执行onClick事件」**,如果返回true,则不执行onClick事件。 btn_2.setonClickListener(new View.onClickListener() { @Override public void onClick(View v) { Toast.makeText(ButtonActivity.this,“btn_2点击事件”,Toast.LENGTH_SHORT).show(); } }); btn_2.setonLongClickListener(new View.onLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(ButtonActivity.this,“btn_2长按点击事件”,Toast.LENGTH_SHORT).show(); return false; } }); 4.内部类实现 //使用 btn_1.setonClickListener(new MyonClickListener()); //内部类实现OnClickListener接口 class MyOnClickListener implements View.OnClickLis tener{ @Override public void onClick(View v) { Toast.makeText(ButtonActivity.this,“btn_1点击事件MyOnClickListener”,Toast.LENGTH_SHORT).show(); } } 交互事件小结 Button的setOnClickListener优先级比xml中android:onClick高,如果同时设置点击事件,只有setOnClickListener有效。 TextView也可以实现onClick事件,如果部分Button使用麻烦可以考虑使用TextView来代替。 Button显示字母大写 解决方案:设置属性android:textAllCaps="false"即可解决 Button设置backgroud无效 解决方案:默认的颜色设置来自于res/values/themes.xml。 将里面的主题parent="Theme.MaterialComponents.DayNight.DarkActionBar"改为(其他主题也可以)parent=“Theme.MaterialComponents.DayNight.DarkActionBar.Bridge”。 Button点击文字变色 方法一 定义一个drawable文件,代码如下: 方法二 1.首先你要在你的color文件下加入几个你需要的色值,注意不同的是不是一般的color标签,而是drawable标签,代码如下: #ff0000 #000000 #FFFFFF 2.定义一个drawable文件,就和正常的selector文件差不多,唯一的区别就是把drawable字段变成color在里面引入你刚刚定义的颜色,代码如下: android:color="@drawable/drawable_color_black" /> 把drawable文件设置为textColor选项就可以了。 以上就是本文Button的全部内容,咱们下面看看他的子类。 RadioButton =========== RadioButton 单选按钮,继承自 Button,所以拥有 Button 的所有公开属性和方法RadioButton 只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked(设置或获取 RadioButton 的选中状态)。 实例 – 在布局文件中添加RadioButton android:id="@+id/rb_red" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“红色” android:textColor="@color/color_ff0000" android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 rb_red.setonCheckedChangeListener(new CompoundButton.onCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //isChecked用于判断 RadioButton 是否选中 if(isChecked){ MLog.e(“选中”); }else{ MLog.e(“未选中”); } } }); 「isChecked」 用于判断RadioButton是否选中。 咱们看运行效果 然后你会发现 只能选中不能取消,说好的单选按钮,怎么成了选择按钮,并且效果图上同时选择了两种颜色。这只能说明我们实现了单选按钮,而不能说我们实现了单选功能。 实现单选功能的方案 1.通过代码进行判断来取消其他按钮的选中状态。 2.引入RadioGroup RadioGroup 单选按钮组 RadioGroup 用于将几个 RadioButton 组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中。 RadioGroup 初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck() 方法。 如果想改变 RadioGroup 里 RadioButton 的排列方式,可以使用属性 android:orientation。 在布局文件中添加控件 新增1个RadioGroup和2个RadioButton,要为每个 RadioButton 添加一个 id,不然单选功能会生效 android:id="@+id/rg" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:layout_gravity=“center_horizontal” android:orientation=“horizontal”> android:id="@+id/rb_liangpi" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“凉皮” android:textSize="@dimen/text_size_18" /> android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:id="@+id/btn_3"
android:background="@drawable/bg_btn_selector_bg"
android:onClick=“btn3OnClick”
android:text=“带按下效果的Button”
咱们看运行效果
此时已经完成了上面的效果图。 我们将 Button 的 android:background 属性设置为该 drawable 资源即可轻松实现按下 按钮时不同的按钮颜色或背景
btn_2因为直接使用drawable,并且未使用selector。所以无点击效果。不管点击还是未点击**「始终显示渐变色」**。
StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector >
btn_3使用了selector,对item标签下android:state_pressed进行不同状态的设置背景色和圆角。根据控件是否被按下展示(color_FF773D/color_188FFF)
交互事件
Button的核心还是在于和用户的交互,否则使用TextView即可。
public class ButtonActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_button);//加载布局文件
initViewButton();
}
private void initViewButton(){
btn_1 = findViewById(R.id.btn_1);
btn_1.setonClickListener(this);
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_1:
Toast.makeText(this,“btn_1点击事件”,Toast.LENGTH_SHORT).show();
break;
default:
给button添加 android:onClick="btn3OnClick"属性
在activity中添加对应名称的方法,满足以下条件
方法的修饰符是 public;
返回值是 void 类型;
//不需要关联控件
public void btn3onClick(View view){
Toast.makeText(this,“btn_3点击事件”,Toast.LENGTH_SHORT).show();
附送一个长按匿名内部类,需要注意的是**「onLongClick」返回「false」会继续「执行onClick事件」**,如果返回true,则不执行onClick事件。
btn_2.setonClickListener(new View.onClickListener() {
Toast.makeText(ButtonActivity.this,“btn_2点击事件”,Toast.LENGTH_SHORT).show();
});
btn_2.setonLongClickListener(new View.onLongClickListener() {
public boolean onLongClick(View v) {
Toast.makeText(ButtonActivity.this,“btn_2长按点击事件”,Toast.LENGTH_SHORT).show();
return false;
//使用
btn_1.setonClickListener(new MyonClickListener());
//内部类实现OnClickListener接口
class MyOnClickListener implements View.OnClickLis tener{
Toast.makeText(ButtonActivity.this,“btn_1点击事件MyOnClickListener”,Toast.LENGTH_SHORT).show();
Button的setOnClickListener优先级比xml中android:onClick高,如果同时设置点击事件,只有setOnClickListener有效。
TextView也可以实现onClick事件,如果部分Button使用麻烦可以考虑使用TextView来代替。
Button显示字母大写
解决方案:设置属性android:textAllCaps="false"即可解决
Button设置backgroud无效
解决方案:默认的颜色设置来自于res/values/themes.xml。
将里面的主题parent="Theme.MaterialComponents.DayNight.DarkActionBar"改为(其他主题也可以)parent=“Theme.MaterialComponents.DayNight.DarkActionBar.Bridge”。
Button点击文字变色
定义一个drawable文件,代码如下:
1.首先你要在你的color文件下加入几个你需要的色值,注意不同的是不是一般的color标签,而是drawable标签,代码如下:
#ff0000
#000000
#FFFFFF
2.定义一个drawable文件,就和正常的selector文件差不多,唯一的区别就是把drawable字段变成color在里面引入你刚刚定义的颜色,代码如下:
android:color="@drawable/drawable_color_black" /> 把drawable文件设置为textColor选项就可以了。 以上就是本文Button的全部内容,咱们下面看看他的子类。 RadioButton =========== RadioButton 单选按钮,继承自 Button,所以拥有 Button 的所有公开属性和方法RadioButton 只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked(设置或获取 RadioButton 的选中状态)。 实例 – 在布局文件中添加RadioButton android:id="@+id/rb_red" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“红色” android:textColor="@color/color_ff0000" android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 rb_red.setonCheckedChangeListener(new CompoundButton.onCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //isChecked用于判断 RadioButton 是否选中 if(isChecked){ MLog.e(“选中”); }else{ MLog.e(“未选中”); } } }); 「isChecked」 用于判断RadioButton是否选中。 咱们看运行效果 然后你会发现 只能选中不能取消,说好的单选按钮,怎么成了选择按钮,并且效果图上同时选择了两种颜色。这只能说明我们实现了单选按钮,而不能说我们实现了单选功能。 实现单选功能的方案 1.通过代码进行判断来取消其他按钮的选中状态。 2.引入RadioGroup RadioGroup 单选按钮组 RadioGroup 用于将几个 RadioButton 组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中。 RadioGroup 初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck() 方法。 如果想改变 RadioGroup 里 RadioButton 的排列方式,可以使用属性 android:orientation。 在布局文件中添加控件 新增1个RadioGroup和2个RadioButton,要为每个 RadioButton 添加一个 id,不然单选功能会生效 android:id="@+id/rg" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:layout_gravity=“center_horizontal” android:orientation=“horizontal”> android:id="@+id/rb_liangpi" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“凉皮” android:textSize="@dimen/text_size_18" /> android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:color="@drawable/drawable_color_black" />
以上就是本文Button的全部内容,咱们下面看看他的子类。
RadioButton
===========
RadioButton 单选按钮,继承自 Button,所以拥有 Button 的所有公开属性和方法RadioButton 只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked(设置或获取 RadioButton 的选中状态)。
实例
–
android:id="@+id/rb_red" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“红色” android:textColor="@color/color_ff0000" android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 rb_red.setonCheckedChangeListener(new CompoundButton.onCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //isChecked用于判断 RadioButton 是否选中 if(isChecked){ MLog.e(“选中”); }else{ MLog.e(“未选中”); } } }); 「isChecked」 用于判断RadioButton是否选中。 咱们看运行效果 然后你会发现 只能选中不能取消,说好的单选按钮,怎么成了选择按钮,并且效果图上同时选择了两种颜色。这只能说明我们实现了单选按钮,而不能说我们实现了单选功能。 实现单选功能的方案 1.通过代码进行判断来取消其他按钮的选中状态。 2.引入RadioGroup RadioGroup 单选按钮组 RadioGroup 用于将几个 RadioButton 组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中。 RadioGroup 初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck() 方法。 如果想改变 RadioGroup 里 RadioButton 的排列方式,可以使用属性 android:orientation。 在布局文件中添加控件 新增1个RadioGroup和2个RadioButton,要为每个 RadioButton 添加一个 id,不然单选功能会生效 android:id="@+id/rg" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:layout_gravity=“center_horizontal” android:orientation=“horizontal”> android:id="@+id/rb_liangpi" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“凉皮” android:textSize="@dimen/text_size_18" /> android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:id="@+id/rb_red"
android:layout_width=“wrap_content”
android:text=“红色”
android:textColor="@color/color_ff0000"
rb_red.setonCheckedChangeListener(new CompoundButton.onCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//isChecked用于判断 RadioButton 是否选中
if(isChecked){
MLog.e(“选中”);
}else{
MLog.e(“未选中”);
「isChecked」 用于判断RadioButton是否选中。
然后你会发现 只能选中不能取消,说好的单选按钮,怎么成了选择按钮,并且效果图上同时选择了两种颜色。这只能说明我们实现了单选按钮,而不能说我们实现了单选功能。
1.通过代码进行判断来取消其他按钮的选中状态。
2.引入RadioGroup
RadioGroup 单选按钮组
RadioGroup 用于将几个 RadioButton 组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中。
RadioGroup 初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck() 方法。
如果想改变 RadioGroup 里 RadioButton 的排列方式,可以使用属性 android:orientation。
新增1个RadioGroup和2个RadioButton,要为每个 RadioButton 添加一个 id,不然单选功能会生效
android:id="@+id/rg" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:layout_gravity=“center_horizontal” android:orientation=“horizontal”> android:id="@+id/rb_liangpi" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“凉皮” android:textSize="@dimen/text_size_18" /> android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:id="@+id/rg"
android:layout_gravity=“center_horizontal”
android:orientation=“horizontal”>
android:id="@+id/rb_liangpi" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“凉皮” android:textSize="@dimen/text_size_18" /> android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:id="@+id/rb_liangpi"
android:text=“凉皮”
android:id="@+id/rb_roujiamo" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“肉夹馍” android:textSize="@dimen/text_size_18" /> 在Activity中添加一个 onCheckedChangeListener 事件处理器 这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。 rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:id="@+id/rb_roujiamo"
android:text=“肉夹馍”
这个OnCheckedChangeListener**「来自RadioGroup」**,而不是RadioButton的CompoundButton.OnCheckedChangeListener。
rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(checkedId==R.id.rb_liangpi){
MLog.e(“选择了凉皮”);
MLog.e(“选择了肉夹馍”);
如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。
CheckBox
========
CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。
可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。
android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_liangpi){ MLog.e(“选择了凉皮”); }else{ MLog.e(“选择了肉夹馍”); } } }); 咱们看运行效果 如此单选按钮功能就实现了,下面咱们看看他的兄弟CheckBox(复选框)。 CheckBox ======== CheckBox 复选框,除了从 Button 继承而来的属性外,没有自己的属性,但从 CompoundButton 继承了一个属性 android:checked 用于表示是否选中。 可以把多个 CheckBox 放在一起实现同时选中多项,但是,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中。 实例 – 在布局文件中添加几个CheckBox android:layout_width=“match_parent”
android:layout_width=“match_parent” rg.setonCheckedChangeListener(new RadioGroup.onCheckedChangeListener() {
上一篇 GridLayoutManager这么用,你可能还真没尝试过,kotlin开发android
下一篇 Kotlin从头开始(一),带你轻松理解Android-Hook机制
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号