Android开发 day03(按钮)

1 Button和TextView的区别

  • Button拥有默认的按钮背景,而TextView默认无背景;
  • Button的内部本文默认居中对齐,TextView默认靠左对齐;

与TextView相比,Button增加了两个属性

  • textAllCaps:指定是否将英文字母转为大写
  • onClick:接管用户的点击操作,指定了点击按钮时要触发哪个方法

2 Button点击事件

2.1 xml文件设置click方法(不建议使用)

代码演示

 <Button
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="直接指定点击方法"
       android:textColor="@color/black"
       android:textSize="17sp"
       android:onClick="doClick"/>
package com.example.day03;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import util.DateUtil;

public class ButtonStyle extends AppCompatActivity {

    private TextView tv_result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_button_style);
        tv_result = findViewById(R.id.tv_result);
    }
    public void doClick(View view){
        String desc=String.format("%s 您点击了按钮 %s", DateUtil.getNowTime(),((Button)view).getText());
        tv_result.setText(desc);

    }
}

结果演示

3 监听器

两种常用的监听器

  • 点击监听器:通过setOnClickListener方法设置。按钮被按住少于500毫秒时触发点击事件。
  • 长按监听器:通过setOnLongClickListener方法设置。按钮被按住超过600毫秒时,会触发长按事件。

3.1 点击监听器

代码显示

public class ButtonClickActivity extends AppCompatActivity {

    private  TextView tv_result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_button_click);
        Button btn_click_single = findViewById(R.id.btn_click_single);
        tv_result = findViewById(R.id.tv_result);
        btn_click_single.setOnClickListener(new MyOnClickListener(tv_result));
    }
    static class MyOnClickListener implements View.OnClickListener{
        private final TextView tv_result;

        public MyOnClickListener(TextView tv_result) {
            this.tv_result = tv_result;
        }

        @Override
        public void onClick(View view) {
            String desc=String.format("%s 您点击了按钮 %s", DateUtil.getNowTime(),((Button)view).getText());
            tv_result.setText(desc);
        }
    }
}

全局onClick方法

package com.example.day03;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import util.DateUtil;

public class ButtonClickActivity extends AppCompatActivity implements View.OnClickListener{

    private  TextView tv_result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_button_click);
        Button btn_click_single = findViewById(R.id.btn_click_single);
        Button btn_click_public = findViewById(R.id.btn_click_public);
        tv_result = findViewById(R.id.tv_result);
        btn_click_single.setOnClickListener(new MyOnClickListener(tv_result));
        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_result.setText(desc);
        }

    }

    static class MyOnClickListener implements View.OnClickListener{
        private final TextView tv_result;

        public MyOnClickListener(TextView tv_result) {
            this.tv_result = tv_result;
        }

        @Override
        public void onClick(View view) {
            String desc=String.format("%s 您点击了按钮 %s", DateUtil.getNowTime(),((Button)view).getText());
            tv_result.setText(desc);
        }
    }
}

结果显示

3.2长按监听器

代码显示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <Button
        android:id="@+id/btn_long_click"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="指定长按的点击监听器"
        android:textColor="@color/black"
        android:textSize="15sp"/>


    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="15sp"
        android:text="查看点击结果"/>


</LinearLayout>
package com.example.day03;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import util.DateUtil;

public class ButtonLongClickActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_long_click);
        Button btn_long_click= findViewById(R.id.btn_long_click);
        TextView tv_result = findViewById(R.id.tv_result);
        btn_long_click.setOnLongClickListener((View.OnLongClickListener) v -> {
            String desc=String.format("%s 您点击了按钮 %s", DateUtil.getNowTime(),((Button)v).getText());
            tv_result.setText(desc);
            return true;

        });

    }
}

结果显示

4 按钮的启用和禁用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    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_weight="1"
            android:layout_height="wrap_content"
            android:text="启用测试按钮"
            android:textColor="@color/black"
            android:textSize="15sp"/>

        <Button
            android:id="@+id/btn_disable"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="禁用测试按钮"
            android:textColor="@color/black"
            android:textSize="15sp"/>


    </LinearLayout>
    <Button
        android:id="@+id/btn_test"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="测试按钮"
        android:textColor="@color/black"
        android:textSize="15sp"/>


    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="15sp"
        android:text="查看点击结果"/>


</LinearLayout>
package com.example.day03;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import util.DateUtil;

public class ButtonEnableActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_test;
    private TextView tv_result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_button_enable);
        Button btn_enable = findViewById(R.id.btn_enable);
        Button btn_disable = findViewById(R.id.btn_disable);
        tv_result = findViewById(R.id.tv_result);
        btn_test = findViewById(R.id.btn_test);
        btn_enable.setOnClickListener(this);
        btn_disable.setOnClickListener(this);
        btn_test.setOnClickListener(this);



    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.btn_enable) {
            btn_test.setEnabled(true);

            btn_test.setTextColor(Color.RED);
        } else if (id == R.id.btn_disable) {
            btn_test.setEnabled(false);
            btn_test.setTextColor(Color.GRAY);
        } else if (id == R.id.btn_test) {
            if (btn_test.isEnabled()) {
                btn_test.setText("按钮已启用");
                String desc=String.format("%s 您点击了按钮 %s", DateUtil.getNowTime(),((Button)v).getText());
                tv_result.setText(desc);

            } else {
                btn_test.setText("按钮已禁用");
            }
        }


    }
}

结果显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值