Widget简单组件 Button按钮

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
在这里插入图片描述
在这里插入图片描述
运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42768634/article/details/115256586