2.2.2 按钮类控件的使用

2.2.2 按钮类控件的使用_第1张图片

一、Button组件的功能与用法

Button、CheckBox、RadioButton、RadioGroup 、ToggleButton 、Switch、ImageButton、CompoundButton:这些都属于按钮组件,这里重点介绍下 Button 的用法。

Button 继承了 TextView,所以 TextView 上很多属性也可以应用到 Button 上,他主要是在UI界面上生成一个按钮,可供用户单击。当用户单击按钮时,按钮会触发一个 onClick 事件,我们可以在这里处理自己想要的逻辑。

下面的例子实现一个功能更强大的按钮:

  • 布局文件:


    
    

上面的布局中第一个是普通按钮,但是为该按钮指定了阴影(与TextView的配置方式相同);第二个按钮通过background配置了背景图片,因为图片是圆形的,所以在这里显示出圆形的样子;第三个按钮给背景指定了选择器,引用的Drawable资源对应如下:



    
    
    
    

我们实际开发中对于Button的,无非是对按钮的几个状态做相应的操作,比如:按钮按下的时候用一种颜色,弹起又一种颜色,或者按钮不可用的时候一种颜色这样!所以说这种方法我们会经常用到,以此指定松开和按下时的不同效果。

StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector >,我们只需要将 Button 的 background 属性设置为该drawable资源即可轻松实现,按下按钮时不同的按钮颜色或背景!我们可以设置的属性有:

常用属性:

drawable:引用的Drawable位图,我们可以把他放到最前面,就表示组件的正常状态
state_focused:是否获得焦点
state_window_focused:是否获得窗口焦点
state_enabled:控件是否可用
state_checkable:控件可否被勾选,eg:checkbox
state_checked:控件是否被勾选
state_selected:控件是否被选择,针对有滚轮的情况
state_pressed:控件是否被按下
state_active:控件是否处于活动状态,eg:slidingTab
state_single:控件包含多个子控件时,确定是否只显示一个子控件
state_first:控件包含多个子控件时,确定第一个子控件是否处于显示状态
state_middle:控件包含多个子控件时,确定中间一个子控件是否处于显示状态
state_last:控件包含多个子控件时,确定最后一个子控件是否处于显示状态

运行效果图:
2.2.2 按钮类控件的使用_第2张图片
不同效果的按钮

二、单选扭(RadioButton)和复选框(CheckBox)的功能与用法

RadioButton、CheckBox 都继承自 Button 类,但与普通按钮不同的是,他们都多了一个可选中的功能,因此他们可以额外指定一个 android:checked 属性,该属性用于指定 RadioButton、CheckBox 初始化的时候是否被选中。

栗子:用 RadioButton、CheckBox 获取用户信息

  • MainActivity.java
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 获取界面上rg、show两个组件
        rg = (RadioGroup) findViewById(R.id.rg);
        show = (TextView) findViewById(R.id.show);
        // 为RadioGroup组件的OnCheckedChange事件绑定事件监听器
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // 根据用户勾选的单选按钮来动态改变tip字符串的值
                String tip = checkedId == R.id.male ? "您的性别是男人": "您的性别是女人";
                // 修改show组件中的文本
                show.setText(tip);
            }
        });
    }

上面的代码采用了“委托式”的事件处理机制,其原理是:当事件源上发生事情的时候,该事件会激发该事件源上的监听器的特定方法。

  • main.xml


    
        
        
        
            
            
            
        
    
    
        
        
        
            
            
            
            
        
    
    

如果在布局文件中指定了某个按钮默认选中的话,则必须为该组单选按钮指定android:id属性,否则不能正常工作。

运行效果:
2.2.2 按钮类控件的使用_第3张图片
RadioButton、CheckBox

三、ToggleButton 和 Switch 的功能与用法

ToggleButton 和 Switch 也是由 Button 派生而来的,因此 Button 的相关属性在这里也都起作用,这里给出更详尽的属性:

1、ToggleButton属性:

  • android:checked:设置该按钮是否被选中
  • android:textOff:设置该按钮状态关闭时显示的文本
  • android:textOn:设置该按钮状态打开时显示的文本

2、Switch属性:

  • android:showText:设置on/off的时候是否显示文字,boolean
  • android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean
  • android:switchMinWidth:设置开关的最小宽度
  • android:switchPadding:设置滑块内文字的间隔
  • android:switchTextAppearance:设置开关的文字外观,暂时没发现有什么用...
  • android:textOff:按钮没有被选中时显示的文字
  • android:textOn:按钮被选中时显示的文字
  • android:textStyle:文字风格,粗体,斜体写划线那些
  • android:track:底部的图片
  • android:thumb:滑块的图片
  • android:checked:设置该按钮是否被选中
  • android:textOff:设置该按钮状态关闭时显示的文本
  • android:textOn:设置该按钮状态打开时显示的文本
  • android:typeface:设置字体,默认支持这三种:sans、serif、monospace;除此以外还可以使用 其他字体文件(*.ttf),首先要将字体文件保存在assets/fonts/目录下,不过需要在Java代码中设置:Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"); textView.setTypeface(typeFace);

感谢优秀的你跋山涉水看到了这里,不如关注下让我们永远在一起!

你可能感兴趣的:(2.2.2 按钮类控件的使用)