2025-07-10

總結瞭Android中常用的按鈕用法

一. Button按鈕用法

背景可設置 : Button按鈕組件可以使用android:background屬性設置按鈕組件的背景顏色, 圖片;

1. Button按鈕陰影文字

設置四屬性 : 為Button設置陰影, 與TextView設置陰影類似, 需要設置以下四個屬性 :

陰影顏色 :android:shadowColor, 該屬性可設置陰影顏色, 如”#FFF”;

模糊程度 :android:shadowRadius, 屬性值為int值, 一般為1, 值越大, 越模糊;

水平偏移 :android:shadowDx, 屬性值為int值, 文字陰影在水平方向上的偏移量;

垂直偏移:android:shadowDy, 屬性值為int值, 文字陰影在垂直;

代碼示例 :

    

2. 設置可切換的圖片點擊資源

selector資源 : 在res的drawable下創建selector文件, 該文件可以定義一個Drawable資源, 可以設置在按鈕點擊時切換成另一張圖片, 抬起的時候換成原來的圖片;

item屬性 : 設置按下與送開時的圖片;

按鈕按下 : item的屬性android:state_pressed 為true的時候, 按鈕按下, 反之按鈕抬起;

按鈕資源 : item的android:drawable屬性代表按鈕顯示的背景圖片;

如何實現 : 在selector跟標簽下定義兩個item, 其中android:pressed_state一個為true, 一個為false, 分別代表按鈕按下和抬起, 為每個item設置一個android:drawable資源, 即可實現按鈕點擊切換圖片的Drawable資源;

代碼示例 :


    
    
    
    
    
    


3. 案例演示

XML佈局文件 :


    
    

selector資源文件 :


    
    
    
    
    
    


效果圖 :

二 9Patch圖片詳解

vcD4KPHA+PHN0cm9uZz45cGF0Y2jNvMasv8nS1Mv1t8XNvMastcTSu7K/t9YsIMC0s+TC+sirxsEsIM7Sw8fJ6NbDsrvL9bfFtcSyv8PFsru74bG7y/W3xTwvc3Ryb25nPjsgPC9wPgo8cD48YnI+CjwvcD4KPHA+PHN0cm9uZz7NvMasuebU8jwvc3Ryb25nPiA6IDlwYXRjaM28xqzLxNbcMc/xy9i1xM/fzPW55raowcvNvMastcTL9bfFLCDP1Mq+uebU8js8L3A+CjxwPi0tIDxzdHJvbmc+y/W3xbnm1PI8L3N0cm9uZz4gOiDX87LgILrNIMnPw+a1xM/fzPW55raowcvL9bfFx/jT8iw8c3Ryb25nPtfzsd/Wsc/fuLK4x7XEx/jT8r/J0tS0udaxy/W3xTwvc3Ryb25nPjs8c3Ryb25nPtPSsd/Wsc/fuLK4x7XEx/jT8r/J0tTLrsa9y/W3xTwvc3Ryb25nPjs8L3A+CjxwPi0tIDxzdHJvbmc+z9TKvrnm1PI8L3N0cm9uZz46INPSsuAgus0gz8Ky4LXEz9/M9bnmtqjBy7vm1sbH+NPyLCDU2rjDx/jT8tauzeK1xM280M48c3Ryb25nPrK7u+Gxu8/Uyr48L3N0cm9uZz47PC9wPgo8cD48YnI+CjwvcD4KPGgyPjEuILzytaW1xLC0xaWxs76wzO6z5DwvaDI+CjxwPjxicj4KPC9wPgo8cD48c3Ryb25nPjlwYXRjaM28xqzWxtf3PC9zdHJvbmc+IDogvfjI63Nka9bQtcR0b29scyw8c3Ryb25nPsuru/cgZHJhdzlwYXRjaC5iYXQguaS+3zwvc3Ryb25nPiwgta+z9s/Cw+a1xLbUu7C/8js8L3A+CjxwPjxzdHJvbmc+stnX97e9t6g8L3N0cm9uZz46IL2ryvOx6rfF1Nqx373ntcTLrsa9tLnWsbXEserP38nPLCC74bP2z9bLq8/yvP3Ntywgzc+2r8urz/K8/c23vLS/ycno1sPLxNbctcS55tTyz9/M9Ts8L3A+CjxwPjxpbWcgc3JjPQ==”/uploadfile/Collfiles/20140116/2014011609191519.jpg” alt=”\”>

案例展示 : 下面的三個按鈕圖片, 第一個按鈕顯示原來大小, 第二個按鈕顯示完全拉伸, 第三個按鈕使用9patch拉伸;

XML佈局文件 :


    
    

效果圖 :

.

2. 制作可拉伸的圓角矩形按鈕

註意 : 如果隻設置瞭拉伸區域, 沒有設置內容顯示區域, 默認情況下 右側 和 下方 是有一定的邊距的;

(1)素材準備

搞一張圖片, 正方形就好 :

(2) 拉伸區域編輯

拉伸位置選擇 : 為瞭保證該圖片拉伸的時候, 四個角能夠保持原樣, 隻拉伸中間的部位, 因此左邊 和 上邊的線條要避開四個角, 盡量將拉伸部位設置在中間;

不設定右側和下冊邊距 : 如果不設定右側 和 下冊的線條, 那麼默認右邊和下側會有一定邊距;

設定右邊和下邊距完全顯示 : 這裡為瞭顯示效果明顯, 設置完全顯示;

拉入 draw9patch.bat 編輯器, 開始編輯 :

(3) 設置內容顯示區域

如果隻設置瞭拉伸區域, 圖片按鈕拉伸不會失真, 但是內容會將整個圖片按鈕填充, 設置瞭內容顯示區域, 類似於設置瞭一個padding, 這樣按鈕文字可以顯示在拉伸圖片中央位置, 與邊緣會有一定的距離;

(4) 案例代碼

XML佈局文件 :


    
    
	

效果圖 :

.

三. 單選按鈕組件

單個選中 : 一組單選按鈕定義在一個RadioGroup中, 這一組RadioButton隻能有一個被選中;

設置監聽 : 可以給RadioGroup設置OnCheckedChangeListener監聽器, 當出現選項改變的時候, 可以調用被選中的RadioButton的id, 然後執行相應方法;

指定id : RadioButton必須為每個單選按鈕指定id, 否則將無法激活回調方法;

代碼示例 :

XML源碼 :


    
    
    
    
        
        
        
        
        
        
        
        
        
    


Activity源碼 :

package shuliang.han.button;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class RadioButtonActivity extends Activity {

	RadioGroup radioGroup;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.radio_button);
		
		radioGroup = (RadioGroup) findViewById(R.id.radio_group);
		
		radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				switch (checkedId) {
				case R.id.nan:
					Toast.makeText(getApplicationContext(), "男", Toast.LENGTH_LONG).show();
					break;
				case R.id.nv:
					Toast.makeText(getApplicationContext(), "女", Toast.LENGTH_LONG).show();
					break;
				case R.id.renyao:
					Toast.makeText(getApplicationContext(), "人妖", Toast.LENGTH_LONG).show();
					break;
				case R.id.yaoren:
					Toast.makeText(getApplicationContext(), "妖人", Toast.LENGTH_LONG).show();
					break;
				default:
					break;
				}
			}
		} );
	}
	
	
	
}

效果圖 :


.

四. 復選框CheckBox組件

CheckBox復選框可以同時勾選幾個選項 :

代碼示例 :


    
    
    
    
    
    
    
    


效果圖 :

五. ToggleButton組件

組件介紹 : 該組件外形與按鈕相似, 該按鈕組件的底部有一個帶顏色線條, 當checked屬性為true的時候, 該線條顯示顏色, checked屬性為false的時候, 蓋線條不顯示顏色;

文本顯示 : 當android:checked屬性為true的時候, 顯示android:textOn文本, 反之顯示android:textOff文本;

重要的XML屬性 :

是否選中 : android:checked, 值為true, 或者false;

選中文本 : android:textOn, 字符串, 當checked屬性為true的時候顯示該文本;

取消文本 : android:textOff, 字符串, 當checked屬性為false的時候顯示該文本;

代碼示例 :

XML代碼 :


    
    


Activity代碼 :

package shuliang.han.button;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
import android.widget.ToggleButton;

public class ToggleButtonActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.toggle_button);
		
		ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle);
		
		toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if(isChecked)
					Toast.makeText(getApplicationContext(), "為瞭聯盟", Toast.LENGTH_LONG).show();
				else
					Toast.makeText(getApplicationContext(), "為瞭部落", Toast.LENGTH_LONG).show();
			}
		});
	}
	
}

效果圖 :

六. Switch按鈕

最低版本要求 : Switch組件需要最低的SDK版本是14;

Switch的XML屬性 :

是否選中 : android:checked, 值為true 或者 false;

最小寬度 : android:switchMinWidth, 設置開關的最小寬度;

設置空白 : android:switchPadding, 設置開關 與 文本 之間的空白;

文本樣式 : android:switchTextAppearance, 設置文本的樣式;

選中文本 : android:textOn, android:checked為true的時候顯示的文本;

關閉文本 : android:textOff, android:checked為false的時候顯示的文本;

文本風格 : android:textStyle, 設置文本的風格, 可以是資源文件;

開關按鈕 : android:thumb, 值為int, 即R.id的資源, 設置開關的按鈕;

開關軌道 : android:track, 值為int, 即R.id的資源, 設置開關的軌道;

字體風格 : android:typeface, 設置開關文本的字體風格;

代碼示例 :

XML源碼 :


    
    


Activity代碼 :

package shuliang.han.button;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Switch;
import android.widget.Toast;

public class SwitchButtonActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.switch_button);
		
		Switch switch1 = (Switch) findViewById(R.id.switch_button);
		
		switch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if(isChecked)
					Toast.makeText(getApplicationContext(), "為瞭聯盟", Toast.LENGTH_LONG).show();
				else
					Toast.makeText(getApplicationContext(), "為瞭部落", Toast.LENGTH_LONG).show();
			}
		});
	}

	
}

效果圖 :

示例源碼下載地址 : https://download.csdn.net/detail/han1202012/6852091

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *