API Demos 2.3 学习笔记 (7)-- Views->Buttons

更多精彩内容,请点击阅读:《API Demos 2.3 学习笔记》


Buttons示例介绍了定义Button,ToggleButton的基本方法。从示例布局文件来看,主要是在线性LinearLayout中定义三个Button,其中第一个为正常的Button,而第二个通过style属性定义了一个小的Button,第三个为ToggleButton。
这里我们主要介绍下ToggleButton。这是一种具有选中和未选中两种状态的按钮,类似开关按钮。通过“android:textOn”属性来设置选中状态下按钮上显示的文本,而相应的,android:textOff”则是用来设置未选中状态下按钮上显示的文本。具体设置参考如下:

android:textOn="开"
android:textOff="关"

ToggleButton可以根据按钮状态的不同,来执行不同的响应动作。
下面主要介绍ToggleButton常用的两种监听方法:点击监听和状态改变监听
1、点击监听OnClickListener
ToggleButton的点击监听和普通Button的点击监听差不多,唯一不同的时,在响应点击时,ToggleButton会根据点击后状态的不同,来执行不同的响应动作。

        //声明ToggleButton对象
        private ToggleButton mtoggleBtn = null;

        //通过findViewById获得ToggleButton
        mtoggleBtn = (ToggleButton)findViewById(R.id.button_toggle);

        //点击监听
        mtoggleBtn.setOnClickListener(new ToggleButton.OnClickListener() {

			public void onClick(View v) {
				// TODO 点击按键时触发响应
				if(mtoggleBtn.isChecked()){
				//当按键被按下,处于选中状态时,执行此处定义的动作
				}
				else{
				//当按键被未被按下,处于未选中状态时,执行此处定义的动作
				}
			}
		});

2、状态改变监听OnCheckedChangeListener

当ToggleButton的状态发生改变时,即状态从选中到未选中,或者从未选中到选中时,都会触发状态改变监听事件。而在响应时,ToggleButton同样会根据改变后状态的不同,来执行不同的响应动作。普通Button不进行状态区分,也就没有状态改变监听事件。

        //声明ToggleButton对象
        private ToggleButton mtoggleBtn = null;

        //通过findViewById获得ToggleButton
        mtoggleBtn = (ToggleButton)findViewById(R.id.button_toggle);

        //状态改变监听
        mtoggleBtn.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {

			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				// TODO 状态改变时触发响应
				if(isChecked){
				//当按键被按下,处于选中状态时,执行此处定义的动作
				}
				else{
				//当按键被未被按下,处于未选中状态时,执行此处定义的动作
				}
			}
        });

下面我们进行实例代码解析:

res-value-string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="buttons_1_normal">Normal</string>
    <string name="buttons_1_small">Small</string>
    <string name="buttons_1_toggle">Toggle</string>
</resources>

res-layout-buttons_1.xml

<?xml version="1.0" encoding="utf-8"?>

<!--很多按钮,可能需要滑动,所以需要放在ScrollView控件内部-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!-- 正常大小按钮 -->
        <Button android:id="@+id/button_normal"
            android:text="@string/buttons_1_normal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <!-- 小按钮 -->
        <Button android:id="@+id/button_small"
            style="?android:attr/buttonStyleSmall"
            android:text="@string/buttons_1_small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <!-- 触发按钮,通常有两种状态,代表开和关
        	 android:textOff  按钮未选中时,显示该属性定义的文本
        	 android:textOn   按钮被选中时,显示该属性定义的文本 -->
        <ToggleButton android:id="@+id/button_toggle"
            android:text="@string/buttons_1_toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

</ScrollView>

src-com.example.android.apis.view-Buttons1.java

package com.example.android.apis.view;

import com.example.android.apis.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

public class Buttons1 extends Activity {
    //声明ToggleButton对象
	private ToggleButton mtoggleBtn = null;

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

        //通过findViewById获得ToggleButton
        mtoggleBtn = (ToggleButton)findViewById(R.id.button_toggle);

        //点击监听
        mtoggleBtn.setOnClickListener(new ToggleButton.OnClickListener() {

			public void onClick(View v) {
				// TODO 点击按键时触发响应
				if(mtoggleBtn.isChecked()){
					//当按键被按下,处于选中状态时,执行此处定义的动作
				}
				else{
					//当按键被未被按下,处于未选中状态时,执行此处定义的动作
				}
			}
		});

        //状态改变监听
        mtoggleBtn.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {

			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				// TODO 状态改变时触发响应
				if(isChecked){
					//当按键被按下,处于选中状态时,执行此处定义的动作
				}
				else{
					//当按键被未被按下,处于未选中状态时,执行此处定义的动作
				}
			}
        });
    }
}

知识点1:style="?android:attr/buttonStyleSmall"
第二个按钮添加了此属性,表示该Button采用android系统内置的针对小按钮的样式buttonStyleSmall。从帮助文档中,我们可以看出,系统内置属性的调用格式有两种,分别为"@[+][package:]type:name" 和  "?[package:][type:]name"。 以样式buttonStyleSmall为例,套用两种格式分别为:style="@+android:attr/buttonStyleSmall" 和 style="?android:attr/buttonStyleSmall"。Button的其他样式参考如下:


int


buttonStyle


正常按钮样式


int


buttonStyleInset


插入EditText的一种Button样式


int


buttonStyleSmall


小按钮样式


int


buttonStyleToggle


ToggleButton样式

预览效果:

时间: 2022-12-06

API Demos 2.3 学习笔记 (7)-- Views-&gt;Buttons的相关文章

API Demos 2.3 学习笔记 (9)-- Views-&amp;gt;Visibility

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> Visibility 示例以TextView为例介绍了View的三种可见性以及如何设置View的可见性.这些可见性的设置方法同样适用于View以及其他继承自View的子类对象.从示例布局文件来看,主要分为两部分,一部分为一个线性垂直布局,包含三个不同背景色的TextVew对象:另一部分,为一个线性水平布局,包含三个Button对象. View的可见性主要分为三种, VISIBLE(可见). INVISIBLE(不可见). GO

API Demos 2.3 学习笔记 (11)-- Views-&amp;gt;Date Widgets

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> Date Widgets大致可以分为两类,一类是弹出对话框类型的控件,包括DatePickerDialog(日期选择对话框控件)和TimePickerDialog(时间选择对话框控件):另一类就是内嵌类型的控件,包括DatePicker(日期选择窗口控件)和TimePicker(时间选择窗口控件).这些控件广泛应用在需要选择和记录时间信息的场合,例如:谷歌日历. 下面我们简单介绍下这四种控件的调用方法: 1.DatePicke

API Demos 2.3 学习笔记 (17)-- Views-&amp;gt;Tabs

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> Tab与TabHost应用很广泛.打开android手机的默认电话拨号程序,上面就是由"拨号","通话记录","通讯录"以及"收藏"四个选项卡组成的. TabHost有两种实现方式,一种是继承TabActivity,另一种是自己定义TabHost,不继承TabActivity.APIDemo中的三个实例都是第一种.想了解TabHost的第二种实现方

API Demos 2.3 学习笔记

API Demos 2.3 学习笔记 Doc和Pdf版本同步更新,请使用git工具进行同步.关于Git工具更多信息,请参考:http://progit.org/book/zh/ git clone https://code.google.com/p/apidemo/  或者 git clone git://github.com/snowdream/apidemo.git 由于笔者才疏识浅.时间匆忙,书中难免出现错误.缺点,欢迎大家批评指正.联系方式:yanghui1986527#gmail.co

API Demos 2.3 学习笔记 (19)-- Views-&amp;gt; TextSwitcher

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> TextSwitcher即文字交换器,是只能包含TextView作为唯一子类型的控件,常用于屏幕上文字标签的动画切换.每次调用setText(CharSequence),TextSwitcher会将当前文字用预定淡出动画隐藏,而将最新文字用预订淡入动画显示出来. 下面简单介绍怎么创建和使用TextSwitcher控件. 1.首先,在布局文件中定义一个TextSwitcher控件 <TextSwitcher android

API Demos 2.3 学习笔记 (15)-- Views-&amp;gt;Radio Group

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> 想想我们上学时候做的单项选择题,其中只有一个是正确答案.在做题的时候,我们只能选择一项.如果我们想在Android上设计一道单项选择题的话,可能就要用到RadioGroup了.RadioGroup常常和RadioButton一起使用.由一个RadioGroup包含若干个RadioButton,组成一个单项选择群组.我们在同一时间只能选中该组中的一个 RadioButton. RadioGroup的创建主要有两种方法: 1.在x

API Demos 2.3 学习笔记 (10)-- Views-&amp;gt;WebView

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> WebView是一个专门用来显示网页的View子类.它使用WebKit渲染引擎来显示网页,并且支持包括前进,后退,放大,缩小,文本搜索等多种功能. WebView有一个辅助类叫WebSettings,它管理WebView的设置状态.该类的对象可以通过WebView.getSettings()方法获得.下面我们介绍几个常用的WebSettings设置: //得到WebView对象 WebView mWebView = (WebV

API Demos 2.3 学习笔记 (13)-- Views-&amp;gt;Seek Bar

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> SeekBar 是基于ProgressBar的扩展,可以理解为添加了滑动条的ProgressBar.用户可以左右移动滑动条或者左右移动轨迹球来设置当前的进度值.最好不要在SeekBar左边或者右边放置一个可以聚焦的控件. SeekBar 控件最经典的应用是在播放器中用于显示/改变播放进度的进度条.下面是一个简单的SeekBar 控件: <SeekBar android:id="@+id/seek" a

API Demos 2.3 学习笔记 (12)-- Views-&amp;gt;Rating Bar

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定.用户可以通过触屏点击或者轨迹球左右移动来进行星型等级评定.RatingBar有三种风格:ratingBarStyle 默认风格  ratingBarStyleSmall 小风格 ratingBarStyleIndicator 大风格 其中,默认风格的RatingBar是我们通常使用的可以交互的,而后面两种不能进行进行交互,只能作为指示牌