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样式

预览效果:


相关文章
|
5月前
|
人工智能 监控 安全
F5社区学习笔记:API和AI如何改变应用安全?
F5社区学习笔记:API和AI如何改变应用安全?
66 1
|
5月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
8月前
|
XML API 数据格式
【Qt 学习笔记】QWidget的enable属性 | API的介绍
【Qt 学习笔记】QWidget的enable属性 | API的介绍
218 0
|
前端开发 API
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
84 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
63 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结3
58 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结4
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结
62 0
|
11天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
5天前
|
JSON 搜索推荐 API
京东店铺所有商品接口系列(京东 API)
本文介绍如何使用Python调用京东API获取店铺商品信息。前期需搭建Python环境,安装`requests`库并熟悉`json`库的使用。接口采用POST请求,参数包括`app_key`、`method`、`timestamp`、`v`、`sign`和业务参数`360buy_param_json`。通过示例代码展示如何生成签名并发送请求。应用场景涵盖店铺管理、竞品分析、数据统计及商品推荐系统,帮助商家优化运营和提升竞争力。
43 23
|
4天前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
22 12