Android中Button實(shí)現(xiàn)點(diǎn)擊換圖案及顏色
基本框架
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="200dp" android:layout_height="100dp"/> </LinearLayout>
基本屬性
在上面的xml
文件中Ctrl+左鍵點(diǎn)進(jìn)Button
可以看到該類是繼承自TextView
類的,也就是說在TextView
部分講到的都可以用在Button
上。
文本與背景
在這里我們就簡單的設(shè)置下按鈕上的文本為"Push Me",背景顏色設(shè)置為紫色(這兩個(gè)資源都被保存在values
文件夾的三個(gè)xml
文件里),但奇怪的是文本都被強(qiáng)制轉(zhuǎn)換成了大寫,而設(shè)置背景也無效。
主題修改
問題出在主題文件themes.xml
上,我們需要進(jìn)入該文件,將textAllCaps
設(shè)為false
,就可以取消強(qiáng)制大寫,即加入下面的代碼:
<item name="textAllCaps">true</item>
然后我們還需要把基礎(chǔ)主題文件由
<style name="Theme.MyButton" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
改為
<style name="Theme.MyButton" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
這樣就可以讓我們的設(shè)置生效了:
雖然設(shè)置了按鈕的基本屬性,但是現(xiàn)在這個(gè)按鈕看上去跟TextView
也沒什么區(qū)別,點(diǎn)擊也毫無反應(yīng),接下來我們就要設(shè)置一下點(diǎn)擊效果。
點(diǎn)擊效果
本次要實(shí)現(xiàn)的效果主要是點(diǎn)擊以后按鈕的背景隨之更換,所以我們在res
->drawable
文件夾下新建一個(gè)Drawable Resource文件,起名為background_shift
。可以看到,該文件的根節(jié)點(diǎn)為圖片選擇器selector
。
圖片變換
然后我們加入一點(diǎn)圖片資源,點(diǎn)擊res
,右鍵new
->Vector Asset
,進(jìn)入這個(gè)界面后點(diǎn)擊Clip Art
選擇一個(gè)喜歡的圖標(biāo),比如我選擇了WiFi:
同時(shí)我另導(dǎo)入了一張WiFi關(guān)閉的圖標(biāo)。
導(dǎo)入后,就可以在background_shift
文件中使用了,在這里我通過state_pressed
設(shè)置按下時(shí)顯示W(wǎng)iFi,不按下時(shí)顯示W(wǎng)iFi關(guān)閉,代碼如下:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_baseline_wifi_24" android:state_pressed="true"/> <item android:drawable="@drawable/ic_baseline_wifi_off_24" android:state_pressed="false"/> </selector>
寫好了background_shift.xml
,就可以在activity_main.xml
中使用了,將Button
的background
屬性設(shè)置為該資源即可實(shí)現(xiàn)背景變換。
顏色變換
做顏色變換與圖像變換類似,不同之處在于資源存放位置不同。在res
文件夾,我們新建一個(gè)color
文件夾,右擊rec
,在new
->Directory
中新建文件夾,取名color
之后在color
中也建立一個(gè)Drawable Resource文件,然后設(shè)定按下時(shí)為藍(lán)色,默認(rèn)為紅色:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#ff0000ff" android:state_pressed="true"/> <item android:color="#ffff0000"/> </selector>
有了這個(gè)顏色變換文件,我們就可以在activity_main.xml
中將Button
的backgroundTint
設(shè)置為該資源從而實(shí)現(xiàn)顏色變換。
除了背景顏色,還有foregroud
前景色,這個(gè)是最上層的顏色,會(huì)覆蓋整個(gè)圖層,不常用。
總結(jié)
到此這篇關(guān)于Android中Button實(shí)現(xiàn)點(diǎn)擊換圖案及顏色的文章就介紹到這了,更多相關(guān)Android Button點(diǎn)擊換圖案及顏色內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android launcher中模擬按home鍵的實(shí)現(xiàn)
這篇文章主要介紹了Android launcher中模擬按home鍵的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-05-05Android實(shí)現(xiàn)點(diǎn)擊縮略圖放大效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)點(diǎn)擊縮略圖放大效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Android Build Variants 為項(xiàng)目設(shè)置變種版本的方法
下面小編就為大家分享一篇Android Build Variants 為項(xiàng)目設(shè)置變種版本的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Flutter禁止手機(jī)橫屏的簡單實(shí)現(xiàn)方法
app默認(rèn)是可以橫屏的,如果需要禁止橫屏話可以參考這篇文章,本文主要給大家介紹了關(guān)于Flutter禁止手機(jī)橫屏的簡單實(shí)現(xiàn)方法,需要的朋友可以參考下2021-07-07Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果(二)
這篇文章主要為大家詳細(xì)介紹了Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08android實(shí)現(xiàn)視頻的加密和解密(使用AES)
本篇文章主要介紹了android實(shí)現(xiàn)視頻的加密和解密(使用AES),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05android編程實(shí)現(xiàn)添加文本內(nèi)容到sqlite表中的方法
這篇文章主要介紹了android編程實(shí)現(xiàn)添加文本內(nèi)容到sqlite表中的方法,結(jié)合實(shí)例較為詳細(xì)的分析了Android針對txt文本文件的讀取及SQL數(shù)據(jù)庫操作的相關(guān)技巧,需要的朋友可以參考下2015-11-11