Android中Button實現(xià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+左鍵點進Button可以看到該類是繼承自TextView類的,也就是說在TextView部分講到的都可以用在Button上。

文本與背景
在這里我們就簡單的設(shè)置下按鈕上的文本為"Push Me",背景顏色設(shè)置為紫色(這兩個資源都被保存在values文件夾的三個xml文件里),但奇怪的是文本都被強制轉(zhuǎn)換成了大寫,而設(shè)置背景也無效。

主題修改
問題出在主題文件themes.xml上,我們需要進入該文件,將textAllCaps設(shè)為false,就可以取消強制大寫,即加入下面的代碼:
<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)在這個按鈕看上去跟TextView也沒什么區(qū)別,點擊也毫無反應(yīng),接下來我們就要設(shè)置一下點擊效果。
點擊效果
本次要實現(xiàn)的效果主要是點擊以后按鈕的背景隨之更換,所以我們在res->drawable文件夾下新建一個Drawable Resource文件,起名為background_shift。可以看到,該文件的根節(jié)點為圖片選擇器selector。
圖片變換
然后我們加入一點圖片資源,點擊res,右鍵new->Vector Asset,進入這個界面后點擊Clip Art選擇一個喜歡的圖標,比如我選擇了WiFi:

同時我另導入了一張WiFi關(guān)閉的圖標。
導入后,就可以在background_shift文件中使用了,在這里我通過state_pressed設(shè)置按下時顯示W(wǎng)iFi,不按下時顯示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è)置為該資源即可實現(xiàn)背景變換。

顏色變換
做顏色變換與圖像變換類似,不同之處在于資源存放位置不同。在res文件夾,我們新建一個color文件夾,右擊rec,在new->Directory中新建文件夾,取名color

之后在color中也建立一個Drawable Resource文件,然后設(shè)定按下時為藍色,默認為紅色:
<?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>
有了這個顏色變換文件,我們就可以在activity_main.xml中將Button的backgroundTint設(shè)置為該資源從而實現(xiàn)顏色變換。

除了背景顏色,還有foregroud前景色,這個是最上層的顏色,會覆蓋整個圖層,不常用。
總結(jié)
到此這篇關(guān)于Android中Button實現(xiàn)點擊換圖案及顏色的文章就介紹到這了,更多相關(guān)Android Button點擊換圖案及顏色內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 自定義view實現(xiàn)進度條加載效果實例代碼
這篇文章主要介紹了Android 自定義view實現(xiàn)進度條加載效果實例代碼,需要的朋友可以參考下2017-08-08
Android Recyclerview實現(xiàn)水平分頁GridView效果示例
本篇文章主要介紹了Android Recyclerview實現(xiàn)水平分頁GridView效果示例,具有一定的參考價值,有興趣的可以了解一下2017-08-08
通過Html網(wǎng)頁調(diào)用本地安卓(android)app程序代碼
如何使用html網(wǎng)頁和本地app進行傳遞數(shù)據(jù)呢?經(jīng)過研究,發(fā)現(xiàn)還是有方法的,總結(jié)了一下,大致有一下幾種方式2013-11-11
Android ExpandableListView展開列表控件使用實例
這篇文章主要介紹了Android ExpandableListView展開列表控件使用實例,本文實現(xiàn)了一個類似手機QQ好友列表的界面效果,需要的朋友可以參考下2014-07-07
解析Android 8.1平臺SystemUI 導航欄加載流程
這篇文章主要介紹了Android 8.1平臺SystemUI 導航欄加載流程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
android文件操作——讀取assets和raw文件下的內(nèi)容
本篇文章主要介紹了android文件操作——讀取assets和raw文件下的內(nèi)容,并附簡單實例代碼,需要的朋友可以參考下。2016-10-10
Flutter Widget開發(fā)Shortcuts快捷鍵實例
這篇文章主要為大家介紹了Flutter Widget開發(fā)Shortcuts快捷鍵實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12

