Buttons详解-Android

按钮

这是自己在Google官方文档的基础上翻译的,当中也有自己的穿插讲述,若有什么错误,还请大家指出。
原网址https://developer.android.com/guide/topics/ui/controls/button.html#Style
一个按钮通常由文本或者图片(或者二者兼有)组成,当用户点击按钮时,一般会执行某个动作(前提你要绑定监听器哟)。
三种格式
你可以根据你的喜好创建任何一种:
如果你喜欢文本,便用Button类:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    ... />

如果你喜欢图片,便使用ImageButtonl类:

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

如果你喜欢二者兼有,便使用带有android:drawableLeft属性的Button类:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:drawableLeft="@drawable/button_icon"
    ... />

响应点击事件

当用户点击按钮后,这个Button对象便接受到了一个响应请求。
为了定义这个按钮的响应请求,要在XML文件中添加andeoid:onClick属性,需要注意的是该属性的值必须和你在Activity中定义的方法一致。
例如:在XML文件中定义了andeoid:onClick属性的值为sendMessage

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />

在Aactivity中必须有一个方法要以sendMessage为名:


public void sendMessage(View view) {
    // Do something in response to button click
}

该方法必须做到以下几点:

  • 修饰符为public
  • 返回值为空
  • 定义一个View作为其唯一参数

使用一个 OnClickListener

你也可以不在XML文件中定义Button的onClick属性, 可以在Activity中用代码实现,
例如:

Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Do something in response to button click
    }
});

按钮类型化

由于不同生产厂家有不同默认的输入类型和不同版本,你的按钮会因为这些原因而呈现不同的外形。
你可以你的整个应用申请一个主题来预防上述问题的产生,比如你可以在manifest的application元素下这样声明

 android:theme="@android:style/Theme.Holo"

这样便可以让在Android 4.0以及更高版本的设备上设置为Holo主题。
你也可以定制自己的按钮专属类型,用android:background属性来引用图片或者颜色资源,另外,你也可以设置font,size等其他的属性。

无边界按钮

一种有用的设计模式便是“无边界按钮“,顾名思义,这种按钮只是没有边界,其他一切都和普通的按钮一样。
例如:

<Button
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage"
    style="?android:attr/borderlessButtonStyle" />

无边界按钮
看起来根本不是一个按钮,却特别像一个TexiView,这其实是个按钮,如果将

style="?android:attr/borderlessButtonStyle"

去掉,将会非常明显
对比图
这样一看,大家就应该明白了.

自定义背景

如果你确实想重新定义你的按钮,你可以指定一个自定义背景,你的背景应该是在按钮根据不同的情形下的一系列状态列表资源,这句话有点绕口,其实就是按钮在不同的情形下有不同的背景,比如按之前一个背景,按的时候一个背景,松开后又一个背景.

  • 创建按钮在默认,点击,松开三种状态下的背景,为了确保你的图片能适应不同大小的按钮尺寸,先用9-patch工具修改你的图片
  • 把修改后的图片放到你项目的res/drawable/文件夹目录中,确保每张图命名正确以保证能清楚的反应按钮点击前后的状态,例如button_default.9.png, button_pressed.9.png, and button_focused.9.png.
  • 新建一个XML文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/button_focused"
          android:state_focused="true" />
    <item android:drawable="@drawable/button_default" />
</selector>
  • 第一个item定义了当按钮被点击时的背景
  • 第二份item定义了当按钮被松开时的背景
  • 第三个item定义了按钮默认情况下的背景
    关于Button,就翻译到这里,希望能帮助到大家。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值