文章目录
Button按钮简介
Button继承于TextView,主要用于在UI界面上生成一个按钮,当用户单击按钮时,会触发一个OnClick事件。通过android: backgroud属性为按钮指定背景颜色或背景图片。
Button类通过继承父类的方法来实现对按钮组件的操作,下表列举了 Button类的常用方法。
Button类的方法
方法 | 功能描述 |
---|---|
onKeyDown() | 当用户按键时,该方法被调用 |
onKeyUp() | 当用户按键弹起后,该方法被调用 |
onKeyLongPress() | 当用户保持按键时,该方法被调用 |
onKeyMultiple() | 当用户多次按键时,该方法被调用 |
invalidateDrawable() | 用于刷新 Drawable对象 |
onPreDraw() | 用于设置视图显示,例如在视图显示之前调整滚动轴的边界 |
setOnKeyLisiener() | 用于设置按键监听器 |
setOnClickListcner() | 用于设置单击监听器 |
代码演示
下面以set(nClickListener()为例,通过一个模拟登录操作来演示 Button、TextView和 EditView的使用。
界面布局代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical">
<!-- 标题 1 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="用户登录"
android:textSize="35sp" />
<!-- 用户名 2 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:" />
<EditText
android:id="@+id/userNameTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<!-- 密码 3 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密 码: " />
<EditText
android:id="@+id/passwordTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
</LinearLayout>
<!-- 登录按钮 4 -->
<Button
android:id="@+id/loginBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录" />
<!-- 成功或失败提示 5 -->
<TextView
android:id="@+id/tipsTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="5dp"
android:text="显示成功或失败"
android:visibility="gone" />
</LinearLayout>
代码解释如下:标号1处显示的是当前界面的标题,并将TextView的字号设为35sp,相对比较醒目;标号2处通过LinearLayout将TextView和 EditText组合起来,用于接收用户名的输入﹔标号3处通过LinearLayout将TextView和 EditText组合起来﹐用于接收密码的输入,其中 EditText的 inputType设置为textPassword,表示该文本框当密码框使用;标号4定义了一个登录按钮﹐在Activity中用于实现登录的业务逻辑处理;标号5定义了一个TextView ,用于显示用户登录成功或失败后的提示,例如用户名不存在﹑密码错误等。通过设置android: visibility = “gone” ,默认隐藏该提示。
接下来在相应的Activity中实现登录的业务逻辑
代码如下
package com.qst.demo2;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class LoginActivity extends AppCompatActivity {
EditText userNameTxt; //用户名
EditText passwordTxt; //密码
Button logingBtn; //登录按钮
TextView tipsTv; //提示
@Override //重写父类的onCreate方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //调用父类的onCreate方法创建Activity
setContentView(R.layout.login); //设置布局为login
//初始化各个组件
userNameTxt = (EditText) findViewById(R.id.userNameTxt);
passwordTxt = (EditText) findViewById(R.id.passwordTxt);
tipsTv = (TextView) findViewById(R.id.tipsTxt);
logingBtn = (Button) findViewById(R.id.loginBtn);
//实现单击Button的监听器,并采用匿名类的形式
logingBtn.setOnClickListener(new View.OnClickListener() {
@Override //重写接口的方法
public void onClick(View v) {
String userName = userNameTxt.getText().toString(); //获取用户名
String passWord = passwordTxt.getText().toString(); //获取密码
//判断用户名
if (!"admin".equals(userName)) {
tipsTv.setText("用户名不存在!");
tipsTv.setVisibility(View.VISIBLE);
return;
}
if (!"1".equals(passWord)) {
tipsTv.setText("密码不正确");
tipsTv.setVisibility(View.VISIBLE);
return;
}
if ("admin".equals(userName) && "1".equals(passWord)) {
tipsTv.setText("登录成功!");
tipsTv.setVisibility(View.VISIBLE);
}
}
});
}
}
代码解释如下:定义了一个EditText类型的属性变量userNameTxt,用于获取界面传递过来的对象,其他属性的定义功能类似,然后对各个属性变量进行初始化,通过对属性变量的赋值,使其能够进行后续的业务逻辑操作。实现了登录按钮 loginBtn的业务逻辑,逻辑相对比较简单,如果用户名无效,则显示“用户名不存在”;如果密码不对,则显示“密码不正确!”;如果用户输人的用户名和密码都正确,则显示“登录成功!”。
在AndroidMainfest.xml清单文件中声明Activity
运行结果