专栏首页分享达人秀常见Button使用详解

常见Button使用详解

Button(按钮)是Android开发中使用非常频繁的组件,主要是在UI界面上生成一个按钮,该按钮可以供用户单击,当用户单击按钮时,按钮会触发一个onClick点击事件。

一、Button简介

Button使用起来比较容易,可以通过指定android:background 属性为按钮增加背景颜色或背景图片,如果将背景图片设为不规则的背景图片,则可以开发出各种不规则形状的按钮。

如果只是使用普通的背景颜色或背景图片,那么这些背景是固定的,不会随着用户的动作而改变。如果需要让按钮的背景颜色、背景图片随用户动作动态改变,则可以考虑使用自定义Drawable对象来实现,该部分内容会在高级开发部分进行详细讲解。

Button派生出来的子类主要有CheckBox、RadioButton、ToggleButton、Switch几个,都可直接使用Button支持的各种属性和方法,后续会进行学习。

二、Button示例

接下来通过一个简单的示例程序来学习Button的常见用法。

首先从网上下载两张图片素材,然后放到res/drawable/目录下,在到res/layout/目录下创建一个button_layout.xml文件,然后在其中填充如下代码片段:

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

    <!-- 普通文字按钮 -->
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="普通按钮"
        android:textSize="16sp"
        android:textColor="#ff00ff"/>


    <!-- 图片按钮-->
    <Button
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:background="@drawable/play"  />


    <!-- 带文字的图片按钮-->
    <Button
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:background="@drawable/button"
        android:textSize="18sp"
        android:text="开始"/>

    </LinearLayout>

上界面布局中的第一个按钮是一个普通按钮;

第二个按钮通过background属性配置了背景图片,因此该按钮将会显示为背景图片形状的按钮;

第三个按钮综合了文字显示和背景图片,因此该按钮将会显示为背景图片上带文字的按钮。

然后修改一下app/src/java/MainActivity.java文件中加载的布局文件为新建的button_layout.xml文件。运行程序,可以看到下图所示界面效果。

通过上面的示例,大体知道如何创建Button,那么接下来通过一个综合示例来继续学习如何使用Button和EditText这两个组件。

三、综合示例

到res/layout/目录下创建一个login.xml文件,然后在其中填充如下代码片段:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="用户名:"
        android:textSize="16sp"/>
    <EditText
        android:id="@+id/name_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="密码:"
        android:textSize="16sp"/>
    <EditText
        android:id="@+id/pwd_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"/>

    <Button
        android:id="@+id/login_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"/>

</LinearLayout>

然后修改一下app/src/java/MainActivity.java文件中加载的布局文件为新建的login.xml文件。为了监听登录按钮的点击事件,在Java代码中为其添加点击事件监听器,具体代码如下:

public class MainActivity extends AppCompatActivity {
    private EditText mNameEt = null; // 用户名输入框
    private EditText mPasswordEt = null; // 密码输入框
    private Button mLoginBtn = null; // 登录按钮

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);


        // 获取界面组件
        mNameEt = (EditText) findViewById(R.id.name_et);
        mPasswordEt = (EditText) findViewById(R.id.pwd_et);
        mLoginBtn = (Button) findViewById(R.id.login_btn);


        // 为登录按钮绑定点击事件
        mLoginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 获取用户输入的用户名和密码
                String name = mNameEt.getText().toString();
                String password = mPasswordEt.getText().toString();

                // 消息提示
                Toast.makeText(MainActivity.this,
                        "用户名:" + name + "\n密码:" + password, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

上面的代码采用匿名内部类方式为登录按钮绑定点击事件监听器,在后续还会学到其他绑定监听器的方法。

运行程序,分别在用户名输入框和密码输入框中输入相应信息,再点击登录按钮,可以看到下图所示界面效果。

到此,最常用的三个组件TextView、EditText和Button都已经学习完成,你都掌握了吗?

本文分享自微信公众号 - 分享达人秀(ShareExpert),作者:鑫鱻

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ListView数据动态更新

    经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据都是静态的,但在实际开发中...

    分享达人秀
  • 学会使用CardView,简单实现卡片式布局效果

    还记得我们一共学过了多少UI控件了吗?都掌握的怎么样啊 安卓中一些常用控件学习得差不多了,今天再来学习一个新的控件CardView,在实际开发中...

    分享达人秀
  • Fragment显示和隐藏、绑定和解绑

    在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加、移除和替换,本期一...

    分享达人秀
  • Android开发之再探底部菜单TabLayout与Bottom navigation实现方式

    前文中已经对主流的底部菜单实现进行了详细说明,但随着Android版本的升级,Google又推出了更方便的实现方式,此文就来一探究竟。 </br> 一、利用Ta...

    YungFan
  • Android手机平板两不误,使用Fragment实现兼容手机和平板的程序

    记得我之前参与开发过一个项目,要求程序可以支持好几种终端设备,其中就包括Android手机和Android Pad。然后为了节省人力,公司无节操地让Androi...

    用户1158055
  • Android新手之旅(10) 嵌套布局

    想在界面上放四个按钮,以2*2的形式存在,却没有办法快速实现。尝试了一下,可以用嵌套的方式,一个LinearLayout嵌套两个LinearLayout,外层...

    用户1075292
  • 教育系统APP(四)

    “我”的模块 掌握修改密码功能的开发,实现用户密码的修改 掌握设置密保功能的开发,并且通过密保可以找回用户密码

    达达前端
  • 六大布局之RelativeLayout

    上一期我们给大家讲解了FrameLayout的使用,这一期我们为大家讲解一下RelativeLayout(相对布局)的使用,RelativeLayout是And...

    下码看花
  • android在代码中怎么设置 RadioGroup的默认值

    这种需求一般是   个人中心 需要的   当用户修改了个人资料之后,下次在修改的话需要从服务器中拿到数据   

    wust小吴
  • 【Android】DataBinding库(MVVM设计模式)

    Gavin-ZYX

扫码关注云+社区

领取腾讯云代金券