目录
按钮控件(Button)
textAllCaps属性
onClick属性
点击事件和长按事件
禁用与恢复按钮
本文介绍按键控件的常见用法,包括:如何设置大小写属性,如何响应按钮的点击事件和长按事件,如何禁用按钮又该如何启用按钮,等等。
按钮控件(Button)
textAllCaps属性
对textView来说,text属性设置什么文本就显示什么文本。但对Button来说,text属性字母不管设置大写还是小写,都默认转成大写
想要不转换成大小需补充textAllCaps属性,该属性默认值为true,表示全都转换为大写,如果设置为false,则表示不转为大写。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ActivityButton">
<TextView
android:id="@+id/tv_btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_btn1"
android:textColor="#000000"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/btn_btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_below="@id/tv_btn1"/>
<TextView
android:id="@+id/tv_btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn_btn1"
android:text="@string/tv_btn2"
android:textColor="#000000"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/btn_btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_btn2"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:text="@string/app_name"
android:textAllCaps="false"/>
</RelativeLayout>
onClick属性
每当点击按钮时,就表示用户确认了某个事项,接下来轮到App来处理了。onClick属性便用来接管用户的点击动作,该属性的值是个方法名,也就是当前页面的Java代码存在这么一个方法:当用户点击时,就自动调用该方法。
Button标签指定了onClick属性值为doClick,表示点击该按钮会触发Java代码中的doClick方法。
<Button
android:id="@+id/btn_btn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btn_btn2"
android:onClick="doClick"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:text="@string/btn_btn3"
android:textAllCaps="false" />
<TextView
android:id="@+id/tv_btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_btn3"
android:layout_below="@id/btn_btn3"
android:layout_centerHorizontal="true"
android:textColor="#000000"/>
与之相对应,页面所在Java代码需要增加doClick方法。
package com.example.helloandroid;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class ActivityButton extends AppCompatActivity {
private TextView tv_btn3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
tv_btn3=findViewById(R.id.tv_btn3);
}
public void doClick(View view){
String desc=String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(),((Button) view).getText());
tv_btn3.setText(desc);
}
}
ps.时间工具DateUtil
package com.example.helloandroid;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
public static String getNowTime() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(new Date());
}
}
点击事件和长按事件
在实际开发中,不推荐使用onClick属性,而是在代码中给按键对象注册监听器。
所谓监听器,意思是专门监听控件的动作行为,它平时无事可做,只有控件发生了指定动作,监听器才会出发开关去执行对应的代码逻辑。点击监听器需要实现接口View.setOnClickLinstener,并重写onClick方法补充点击事件的处理代码,再由按钮调用setOnClickLinstener方法设置监听对象。
public class ActivityButton extends AppCompatActivity implements View.OnClickListener{
private TextView tv_btn3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
findViewById(R.id.btn_btn4).setOnClickListener(this);
findViewById(R.id.btn_btn5).setOnClickListener(this);
}
@Override
public void onClick(View v){
if (v.getId()==R.id.btn_btn4){
String desc=String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(),((Button) v).getText());
tv_btn3.setText(desc);
}
if (v.getId()==R.id.btn_btn5){
String desc=String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(),((Button) v).getText());
tv_btn3.setText(desc);
}
}
}
除了点击事件外,Android还设计了另外一种长按事件,每当控件被按住超过500毫秒之后,就会触发该控件的长按事件。若要捕捉按钮的长按事件,可调用按钮对象的setOnLongClickListener方法设置长按监听器。
把长按监听器设置到当前页面,该页面需要实现对应的长按接口View.OnLongClickListener,并重写长按方法onLongClick。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
tv_btn3=findViewById(R.id.tv_btn3);
findViewById(R.id.btn_btn6).setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (v.getId()==R.id.btn_btn6){
String desc=String.format("%s 您长按了按钮:%s",DateUtil.getNowTime(),((Button) v).getText());
tv_btn3.setText(desc);
}
return true;
}
});
}
禁用与恢复按钮
在某些情况,我们会希望暂时禁止点击操作,这样的业务场景中,按钮先后有两种状态,即不可以状态与可用状态,他们在外观功能上的区分如下:
(1)不可用按钮:按钮不允许点击,即使点击也没反应,同时按钮文字为灰色。
(2)可以按钮:按钮允许点击,点击按钮会触发点击事件,同时按钮文字为正常黑色。
是否允许点击,需引入新属性android:enabled ,该属性值为true时表示启用,false时表示禁用。文章来源:https://www.toymoban.com/news/detail-421468.html
<Button
android:id="@+id/btn_btn6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btn_ll"
android:enabled="false"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="测试按钮"/>
在Java中可通过setEnabled方法设置按钮的可用状态(true表示启用,false表示禁用)。文章来源地址https://www.toymoban.com/news/detail-421468.html
@Override
public void onClick(View v){
if (v.getId()==R.id.btn_btn4){
btn_test.setTextColor(Color.BLACK);
btn_test.setEnabled(true);
String desc=String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(),((Button) v).getText());
tv_btn3.setText(desc);
}
if (v.getId()==R.id.btn_btn5){
btn_test.setTextColor(Color.GRAY);
btn_test.setEnabled(false);
String desc=String.format("%s 您点击了按钮:%s",DateUtil.getNowTime(),((Button) v).getText());
tv_btn3.setText(desc);
}
}
到了这里,关于Android Studio 学习记录-按钮控件(Button)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!