Android基础-Button|青训营笔记

110 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第3天。

1.按钮类型

1.1 按钮的三种类型

我们可以通过三种方式在布局中创建按钮。在这里我们可以创建仅包含文本的按钮,仅包含图标的按钮,还有同时包含文本和图标的按钮。

1.2 仅包含文本的按钮

如果我们创建的是仅包含文本的按钮,需要使用Button类。演示代码如下:

<Button
    android:id="@+id/btn_click_single"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="这是一个按钮"
    android:textColor="#000000"
    android:textSize="15sp"/>

效果如下:

image.png

1.3 仅包含图标的按钮

如果我们创建的是仅包含图标的按钮,需要使用ImageButton类。演示代码如下:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/btn_selector" />

效果如下:

image.png

1.4 同时包含文本和图标的按钮

如果我们创建的是同时包含文本和图标的按钮,则需要使用回一趟android:drawableLeft属性的Button。演示代码如下:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="这是一个按钮"
    android:drawableLeft="@drawable/btn_selector"/>

效果如下:

image.png

2.1 响应点击事件

当用户点击按钮时,Button对象会收到点击事件。如果要为按钮定义点击事件处理脚本,则将android:onClick属性添加到XML布局中的<Button>元素。此属性的值必须是为了响应点击事件而调用的方法的名称。

在这里举个例子:

<Button
    android:id="@+id/button_listen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="这是一个播放按钮"
    android:onClick="listen" />

同时,我们需要在管理这个布局的Activity内使用listenMusic来处理点击事件:

public void listenMusic(View view){
    // listen to the music
}

我们在android:onClick属性中声明的方法必须有改签名。但同时我们也要注意的是,这个方法需要满足一定的条件。

2.1.1 我们需要满足的条件:

  • 公开
  • 返回void
  • View指定为其唯一的参数

2.2 使用onClickListener

我们可以通过程序化方式声明点击事件处理脚本,而不是在XML布局中。若要在运行时实例化Button,或者需要在Fragment子类中声明点击行为,则可能必须要这样做。 我们若是要以程序化方式来声明事件处理脚本,则需要创建一个View.OnClickListener对象,并且调用setOnClickListener(View.OnClickListener)来将其分配给按钮。 举例如下:

Button button = (Button) findViewById(R.id.button_listen);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Listen to the music
    }
});

3.注意点

3.1 按钮控件Button

按钮控件Button由TextView派生而来。它们之间的区别有:

  • Button拥有默认的按钮背景,而TextView默认无背景。
  • Button的内部文本默认居中对齐,而TextView的内部文本默认靠左对齐。
  • Button会默认将英文字母转为大小写,而TextView保持原始的英文大小写。

3.2 图像按钮ImageButton

ImageButton是显示图片的图像按钮,但它继承ImageView,而非继承Button。 ImageButton和Button的区别:

  • Button既可以显示文本也可显示图片,ImageButton只能显示图片不能显示文本。
  • ImageButton上的图像可按比例缩放,而Button通过背景设置的图像会拉伸变形。
  • Button只能靠背景显示一张图片,而ImageButton可分别在前景和背景显示图片,从而实现两张图片叠加的效果。