yetang307

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
不管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); // 设置文本视图的文本内容
        }
    }

 

 

 

 

posted on 2023-03-03 21:38  椰糖  阅读(20)  评论(0)    收藏  举报