Android 按钮类控件大集锦:Button ToggleButton CheckBox RadioButton

本文主要是介绍Android 按钮类控件大集锦:Button ToggleButton CheckBox RadioButton,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址 

http://www.cnblogs.com/mengdd/archive/2013/01/17/2865320.html

Button

  Button的基本使用之前已经讨论过:

  http://www.cnblogs.com/mengdd/archive/2012/12/20/2826235.html

  其中介绍了两种处理点击的方法:一种是通过在布局文件中设置onClick属性;另一种是通过在程序中设置Listener。

  这两种方法对于本文中其他控件也适用,只不过第二种方法可能具体函数名称会有所变化。

  对于Button的应用补充一些内容:

  Button可以有文字的、图形的、或者文字和图形都有的。

  主要是文字的,在布局文件中声明 Button 即可;图形的,就声明为ImageButton,并且添加属性src

  比如:

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

 

  如果是文字和图形都有,则使用 Button 类,但是加上android:drawableLeft 属性设置图像:

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

Styling Your Button

  可以设置按钮的风格和主题,这部分内容先不详述,如有兴趣可以转向文末尾的参考链接。

 

无边按钮

  加上属性style="?android:attr/borderlessButtonStyle"

  如:

复制代码
<Buttonandroid: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" />
复制代码
 

自定义背景

  可以定义按钮各种状态对应的图片,首先需要把这些图片资源加入进来,然后在res/drawable/目录下创建一个XML文件,将状态和对应的图片绑定;最后在Button的android:background 属性中加入该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的顺序是很重要的,当这个drawable资源被引用时,<item>元素会按顺序被查询如果匹配立即返回,不再向后查询

  所以把默认的情况放在最后,当前面的状态都不匹配时,显示默认图像。

  

复制代码
<Buttonandroid:id="@+id/button_send"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_send"android:onClick="sendMessage"android:background="@drawable/button_custom"  />
复制代码

   

  drawable除了可以是图片以外,也可以是自己定义的shape,比如这个state_list其中的drawable就是自己定义的shape(当然从这个文件中是看不出来的,它们和图像的引用方式没有差别):

复制代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/shape_one" android:state_pressed="true"/><!-- pressed --><item android:drawable="@drawable/shape_two" android:state_focused="true"/><!-- focused --><item android:drawable="@drawable/shape_three"/><!-- default --></selector>
复制代码

  

 

  其中自定义的shape:shape_one.xml:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle" ><gradientandroid:angle="45"android:endColor="#80FFBBFF"android:startColor="#FFFFBB00" /><paddingandroid:bottom="7dp"android:left="7dp"android:right="7dp"android:top="7dp" /><corners android:radius="8dp" /></shape>
复制代码

 

  shape_two.xml

 

  shape_three.xml


  具体可以参见:API Guides: Drawable Resources

  http://developer.android.com/guide/topics/resources/drawable-resource.html


自定义Button字体颜色:

  根据上面的思路,字体颜色也可以采用自定义变化的方式:

  比如设置Button的属性如下:

复制代码
    <Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/myTextView"android:background="@drawable/button_state_list"android:text="Test Button"android:textColor="@drawable/btn_text_color_state_list" />
复制代码

 

  其中btn_text_color_state_list.xml:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:color="#ffff0000"/><!-- pressed --><item android:state_focused="true" android:color="#ff0000ff"/><!-- focused --><item android:color="#ff000000"/><!-- default --></selector>
复制代码


 

Toggle Buttons

  这种按钮ToggleButton只涉及两种状态的转换,Android 4.0 (API level 14)开始,引入了 Switch,可以进行滑动控制,如下图:

  

 

  可以更改android:textOnandroid:textOff属性,设置按钮状态为true和false时的文字。

 

 

复选框Checkbox

    复选框类 CheckBox 是CompoundButton类的子类,而CompoundButton类是Button类的子类,是带有选择和未选择状态的Button。

  关于实现,直接看代码吧。

 

单选按钮

  单选按钮用于从一个集合中选中一项。

  单选组将用户的可选项全部罗列出来,让用户选择一个,如果不需要全部罗列出来,可以考虑换用spinner,关于spinner的使用先不赘述。

  每一个单选按钮项是一个 RadioButton ,因为单选项目是互斥的,所以需要把它们结成组,组成 RadioGroup,系统会使得一组中每次只要一个被选中。

  RadioButton和CheckBox一样,都是CompoundButton的子类。

  而RadioGroup却继承自LinearLayout,默认是垂直布局。

 

  除了给每个RadioButton的onClick属性赋值以外(同一个函数名),还可以通过对RadioGroup设置事件监听。

  调用RadioGroup对象的setOnCheckedChangeListener方法。

 

  RadioButton不像CheckBox那样,RadioButton不可以通过二次点击来取消选择。

  但是可以通过在RadioGroup外部的按钮之类的,对整个RadioGroup进行清除,清除后,checkedId变为-1,表示没有单选按钮被选择。

  

  

程序实例

  还是看直接的例子比较简单有效:

  程序运行如下图:

  

 

 

  例子中:

  第一个按钮是无边框按钮;

  第二个按钮本来是一个小按钮,后来用于实践了自定义背景的效果,按钮被点击和获得焦点时的图片与默认图片不同;

  第三个按钮是一个ImageButton,通过这个按钮试了试长按和点击的事件;

  之后是两个Toggle Button,第一个是默认文字,添加了事件相应,第二个更改了两种状态的文字;

  之后是Check Box和Radio Group。

  这里利用了最初的第一个按钮,作为一个重置按钮,将多选和单选的状态都设置为没有选择,并且两个Toggle Button都设置为false。

 

代码

布局文件:

activity_hello_button.xml

Activity代码:

HelloButton.java

Button自定义图片效果需要的配置文件(放在res/drawable/目录下):

button_custom.xml

字符串资源文件:

strings.xml

 

 

参考资料

  API Guides: Buttons

  http://developer.android.com/guide/topics/ui/controls/button.html

  API Guides: Styles and Themes

  http://developer.android.com/guide/topics/ui/themes.html

  API Guides: Toggle Buttons

  http://developer.android.com/guide/topics/ui/controls/togglebutton.html

  API Guides: Checkboxes

  http://developer.android.com/guide/topics/ui/controls/checkbox.html

  API Guides: Radio Buttons

  http://developer.android.com/guide/topics/ui/controls/radiobutton.html

这篇关于Android 按钮类控件大集锦:Button ToggleButton CheckBox RadioButton的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070986

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动