Android Button按鈕點(diǎn)擊背景和文字變化操作
Android 原生的按鈕點(diǎn)擊狀態(tài)是有變化的,但是如果是自己加了一個.png格式的圖片為背景色,按鈕點(diǎn)擊就不會有任何效果,為了達(dá)到點(diǎn)擊按鈕有一閃的效果,我們就需要準(zhǔn)備兩張圖進(jìn)行切換, 而且文字也要變色,老規(guī)矩廢話不多說直接上代碼:
按鈕背景圖片放在 drawable/background_button.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/bg_press" android:state_pressed="true"/> <item android:drawable="@drawable/bg_normal" android:state_enabled="true"/> <item android:drawable="@drawable/bg_normal"/> </selector>
準(zhǔn)備兩張圖片一張為bg_press.png, 一張為 bg_normal.png。
在需要變化的按鈕中設(shè)置:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="50dp"
android:focusable="false"
android:gravity="center"
android:textSize="24px"
android:text="@string/str_tethering_modify"
android:background="@drawable/background_button" />
這有背景色變化就解決完了,下面到按鈕上的文字了,現(xiàn)在點(diǎn)擊按鈕按鈕上的文字是沒有變化的,為了達(dá)到按鈕文字顏色的變化我們再新建一個xml文件。
按鈕顏色變化 drawable/button_color.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="#975508"/> <item android:state_focused="false" android:state_pressed="false" android:color="#E5960E"/> <item android:state_focused="true" android:color="#975508"/> <item android:state_focused="false" android:color="#E5960E"/> </selector>
加入到我們的按鈕textColor中
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="50dp"
android:focusable="false"
android:gravity="center"
android:textSize="24px"
android:textColor="@drawable/button_color"
android:text="@string/str_tethering_modify"
android:background="@drawable/background_button" />
這樣直接使用背景和文字就都有點(diǎn)擊效果啦,但是如果有這樣一個需求,在某些條件下需要再設(shè)置按鈕文字的顏色button.setTextColor(color),這樣設(shè)置完后,發(fā)現(xiàn)我們按鈕上文字點(diǎn)擊又沒有變化了,我之前試著直接 button.setTextColor(R.drawable.button_color);發(fā)現(xiàn)這樣是沒有任何用處的。這樣就需要使用 ColorStateList 來解決,顧名思義,就是定義顏色的狀態(tài)列表,通過監(jiān)聽按鈕不同狀態(tài)來設(shè)置不同的顏色,
老規(guī)矩,廢話不多說了,直接貼代碼:
/**
* 按鈕點(diǎn)擊顏色變化
*/
private ColorStateList colorStateList;
colorStateList = (ColorStateList)getResources().getColorStateList(R.drawable.button_color);
if(xxx){
button.setTextColor(Color.White);
}else{
button.setTextColor(colorStateList);
}
這樣就完美解決了按鈕點(diǎn)擊狀態(tài)的變化啦。
補(bǔ)充知識:android studio設(shè)置按鈕和背景融為一體也就是按鈕去除陰影
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" style="?android:attr/borderlessButtonStyle" />
以上這篇Android Button按鈕點(diǎn)擊背景和文字變化操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程實(shí)現(xiàn)上方通知欄里閃動效果的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)上方通知欄里閃動效果的方法,結(jié)合實(shí)例形式分析了Android通知欄動畫特效具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02
Android實(shí)現(xiàn)移動小球和CircularReveal頁面切換動畫實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于利用Android如何實(shí)現(xiàn)移動的小球和CircularReveal頁面切換動畫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-09-09
Fragment跳轉(zhuǎn)時傳遞參數(shù)及結(jié)果回傳的方法(推薦)
今天總結(jié)一下Fragment間的參數(shù)傳遞及結(jié)果返回的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下2017-01-01
Android TextView 去掉自適應(yīng)默認(rèn)的fontpadding的實(shí)現(xiàn)方法
這篇文章主要介紹了Android TextView 去掉自適應(yīng)默認(rèn)的fontpadding的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文大家能夠掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09
Android編程之TabWidget選項(xiàng)卡用法實(shí)例分析
這篇文章主要介紹了Android編程之TabWidget選項(xiàng)卡用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了TabWidget選項(xiàng)卡的具體實(shí)現(xiàn)技巧與使用注意事項(xiàng),需要的朋友可以參考下2015-12-12
Android開發(fā)之DrawerLayout實(shí)現(xiàn)抽屜效果
這篇文章主要介紹了Android開發(fā)之DrawerLayout實(shí)現(xiàn)抽屜效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Android實(shí)現(xiàn)動態(tài)切換組件背景的方法
這篇文章主要介紹了Android實(shí)現(xiàn)動態(tài)切換組件背景的方法,需要的朋友可以參考下2014-07-07
android實(shí)現(xiàn)驗(yàn)證碼按鈕
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)驗(yàn)證碼按鈕功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07

