系列文章目录
前言
提示:以下是本篇文章正文内容,下面案例可供参考
1.按钮控件Button
按钮控件Button由TextView派生而来,它们之间的区别有:
⭕️Button拥有默认的按钮背景,而TextView默认无背景;
⭕️Button的内部文本默认居中对齐,而TextView的内部文本默认靠左对齐;
⭕️Button会默认将英文字母转为大写,而TextView保持原始的英文大小写;
1.1按钮控件的新增属性
与TextView相比,Button增加了两个新属性:
textAllCaps属性,它指定了是否将英文字母转为大写,为true是表示自动转为大写,为false表示不做大写转换。
onClick属性,它用来接管用户的点击动作,指定了点击按钮时要触发哪个方法;
onclick 过时了但是还能用,现在使用setOnclickListener多点 ,
2. 点击事件和长按事件
2.1 点击事件
监听器,意思是专门监听控件的动作行为。只有控件发生了指定的动作,监听器才会触发开关去执行对应的代码逻辑。
按钮控件有两种常用的监听器:
1️⃣点击监听器,通过setOnClickListener方法设置。按钮被按住少于500毫秒时,会触发点击事件。
2️⃣ 长按监听器,通过setOnLongClickListener方法设置。按钮被按住超过500毫秒时,会触发长按事件。
private TextView tv_btn_result;// 全局
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_button_click);
tv_btn_result = findViewById(R.id.tv_btn_result);// ctrl + alt + f 全局定义变量
Button tv_btn = findViewById(R.id.btn_click);
tv_btn.setOnClickListener(new MyonclickListener(tv_btn_result));
//第二种监听设置
Button btn_click_public= findViewById(R.id.btn_click_public);
btn_click_public.setOnClickListener(this);
}
class MyonclickListener implements View.OnClickListener {
// static 防止内存泄露
private final TextView textView;
public MyonclickListener(TextView tv_btn_result) {
textView = tv_btn_result;
}
@Override
public void onClick(View view) {
String desc = String.format("%s 点击了按钮: %s ", DateUtil.getNowTime(),((Button)view).getText());
tv_btn_result.setText(desc);
}
}
public class MainActivity_button_click extends AppCompatActivity implements View.OnClickListener {
private TextView tv_btn_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_button_click);
tv_btn_result = findViewById(R.id.tv_btn_result);// ctrl + alt + f 全局定义变量
//第二种监听设置
Button btn_click_public= findViewById(R.id.btn_click_public);
btn_click_public.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view.getId()==R.id.btn_click_public){
String desc = String.format("%s 点击了按钮: %s ", DateUtil.getNowTime(),((Button)view).getText());
tv_btn_result.setText(desc);
}
}
}
2.2 长按事件
还有很多其他的点击事件,需要同学们的慢慢探索
3. 禁用与恢复按钮
在实际业务中,按钮通常拥有两种状态,即不可用状态与可用状态,它们在外观和功能上
的区别如下:
⭕️不可用按钮:按钮不允许点击,即使点击也没反应,同时按钮文字为灰色;
⭕️可用按钮:按钮允许点击,点击按钮会触发点击事件,同时按钮文字为正常的黑色;
⭕️是否允许点击由enabled属性控制,属性值为true时表示允许点击,为false时表示不允许点击。
package com.example.myapplication_01;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.example.myapplication_01.utils.DateUtil;
public class ButtonenbleActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_test;
private TextView tv_result3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buttonenble);
Button btn_enable =findViewById(R.id.btn_enble);
Button btn_disable= findViewById(R.id.btn_disable);
btn_test = findViewById(R.id.btn_test);
tv_result3 = findViewById(R.id.tv_result_3);
btn_enable.setOnClickListener(this);
btn_disable.setOnClickListener(this);
btn_test.setOnClickListener(this);
}
@Override
public void onClick(View v ) {
switch (v.getId()){
case R.id.btn_enble:
btn_test.setEnabled(true);
btn_test.setTextColor(Color.GREEN);
break;
case R.id.btn_disable:
btn_test.setEnabled(false);
btn_test.setTextColor(Color.GRAY);
break;
case R.id.btn_test:
String desc = String.format("%s 你点击了按钮:%s", DateUtil.getNowTime(),((Button)v).getText());
tv_result3.setText(desc);
break;
}
}
}
总结
Button (按钮)继承自TextView,在Android开发中,Button是常用的控件,用起来也很简单,你可以在界面xml描述文档中定义,也可以在程序中创建后加入到界面中,其效果都是一样的。