不管text属性设置的是大写字母还是小写字母,按钮控件都默认转成大写字母显示。
<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World"/>
textAllCaps属性,该属性默认为true表示全部转为大写,如果设置为false则表示不转为大写。
<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World" android:textAllCaps="false"/>

onClick属性便用来接管用户的点击动作,该属性的值是个方法名,也就是当前页面的Java代码存在这么一个方法:当用户点击按钮时,就自动调用该方法。
<Button android:id="@+id/btn_click_xml" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="doClick" android:text="直接指定点击方法" android:textColor="#000000" android:textSize="17sp" /> <TextView android:id="@+id/tv_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这里查看按钮的点击结果" android:textColor="#000000" android:textSize="17sp" />
java页面
// activity_button_style.xml中给btn_click_xml指定了点击方法doClick
public void doClick(View view) {
String desc = String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(), ((Button)view).getText());
tv_result.setText(desc); // 设置文本视图的文本内容
}
点击事件和长按事件:
点击监听器需要实现接口View.OnClickListener,并重写onClick方法补充点击事件的处理代码,再由按钮调用setOnClickListener方法设置监听器对象。
java页面:
// 从布局文件中获取名为btn_click_single的按钮控件 Button btn_click_single = findViewById(R.id.btn_click_single); // 给btn_click_single设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法 btn_click_single.setOnClickListener(new MyOnClickListener()); // 定义一个点击监听器,它实现了接口View.OnClickListener class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View v) { // 点击事件的处理方法 String desc = String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(), ((Button)v).getText()); tv_result.setText(desc); // 设置文本视图的文本内容 } }
多个按钮:
@Override public void onClick(View v) { // 点击事件的处理方法 if (v.getId() == R.id.btn_click_public) { // 来自于按钮btn_click_public String desc = String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(), ((Button)v).getText()); tv_result.setText(desc); // 设置文本视图的文本内容 } } // 从布局文件中获取名为btn_click_public的按钮控件 Button btn_click_public = findViewById(R.id.btn_click_public); // 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法 btn_click_public.setOnClickListener(this);
长按事件:
// 从布局文件中获取名为btn_click_public的按钮控件 Button btn_longclick_public = findViewById(R.id.btn_longclick_public); // 设置长按监听器,一旦用户长按按钮,就触发监听器的onLongClick方法 btn_longclick_public.setOnLongClickListener(this); @Override public boolean onLongClick(View v) { // 长按事件的处理方法 if (v.getId() == R.id.btn_longclick_public) { // 来自于按钮 btn_longclick_public String desc = String.format("%s 您长按了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText()); tv_result.setText(desc); // 设置文本视图的文本内容 } return true; }
点击监听器和长按监听器不局限于按钮控件,其实它们都来源于视图基类View,凡是从View派生而来的各类控件,均可注册点击监听器和长按监听器。譬如文本视图TextView,其对象也能调用setOnClickListener方法与setOnLongClickListener方法,此时TextView控件就会响应点击动作和长按动作。因为按钮存在按下和松开两种背景,便于提示用户该控件允许点击,但文本视图默认没有按压背景,不方便判断是否被点击,所以一般不会让文本视图处理点击事件和长按事件。
禁用与恢复按钮:
(1)不可用按钮:按钮不允许点击,即使点击也没反应,同时按钮文字为灰色。
(2)可用按钮:按钮允许点击,点击按钮会触发点击事件,同时按钮文字为正常的黑色。
不可用与可用状态主要有两点差异:其一,是否允许点击;其二,按钮文字的颜色。就文字颜色而言,可在布局文件中使用textColor属性设置颜色,也可在Java代码中调用setTextColor方法设置颜色。至于是否允许点击,则需引入新属性android:enabled,该属性值为true时表示启用按钮,即允许点击按钮;该属性值为false时表示禁用按钮,即不允许点击按钮。在Java代码中,则可通过setEnabled方法设置按钮的可用状态
xml页面
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_enable" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="启用测试按钮" android:textColor="#000000" android:textSize="17sp" /> <Button android:id="@+id/btn_disable" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="禁用测试按钮" android:textColor="#000000" android:textSize="17sp" /> </LinearLayout> <Button android:id="@+id/btn_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:enabled="false" android:text="测试按钮" android:textColor="#888888" android:textSize="17sp" /> <TextView android:id="@+id/tv_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="5dp" android:text="这里查看测试按钮的点击结果" android:textColor="#000000" android:textSize="17sp" /> </LinearLayout>
java页面代码
// 因为按钮控件的setOnClickListener方法来源于View基类,所以也可对findViewById得到的视图直 接设置点击监听器 findViewById(R.id.btn_enable).setOnClickListener(this); findViewById(R.id.btn_disable).setOnClickListener(this); btn_test = findViewById(R.id.btn_test); // 获取名叫btn_test的按钮控件 btn_test.setOnClickListener(this); // 设置btn_test的点击监听器 @Override public void onClick(View v) { // 点击事件的处理方法 // 由于多个控件都把点击监听器设置到了当前页面,因此公共的onClick方法内部需要区分来自于哪个 按钮 if (v.getId() == R.id.btn_enable) { // 点击了按钮“启用测试按钮” btn_test.setTextColor(Color.BLACK); // 设置按钮的文字颜色 btn_test.setEnabled(true); // 启用当前控件 } else if (v.getId() == R.id.btn_disable) { // 点击了按钮“禁用测试按钮” btn_test.setTextColor(Color.GRAY); // 设置按钮的文字颜色 btn_test.setEnabled(false); // 禁用当前控件 } else if (v.getId() == R.id.btn_test) { // 点击了按钮“测试按钮” String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText()); tv_result.setText(desc); // 设置文本视图的文本内容 } }


浙公网安备 33010602011771号