android 动态改变button样式,Android 修改button颜色
之前覺(jué)得button顏色修改,直接修改background就行了,但是會(huì)引發(fā)一系列的問(wèn)題。比如原來(lái)的波紋效果沒(méi)有了,button的狀態(tài)改變的時(shí)候(例如,被禁用了),button的顏色沒(méi)有任何變化。
這里針對(duì)這個(gè)問(wèn)題做一個(gè)方法的小結(jié)
普通Button的解決方法
普通的Button,解決方法比較常見(jiàn),直接使用Drawable,自己做一個(gè)selector,需要點(diǎn)擊的波紋效果的話,加上,之后添加一個(gè)例子:
栗子
MaterialButton的解決方法
進(jìn)入Material設(shè)計(jì)以后,MaterialButton使用起來(lái)和普通button有一些區(qū)別。
在將app的主題設(shè)置為T(mén)heme.MaterialComponents.Light.NoActionBar的時(shí)候。
我們的button顏色會(huì)默認(rèn)變成colorAccent的顏色。
MaterialButton的background屬性不起作用了,必須要設(shè)置
app:backgroundTint才有效果。
但是設(shè)置這個(gè)屬性以后,我們的button在改變狀態(tài)的時(shí)候,顏色就不會(huì)發(fā)生變化了(點(diǎn)擊的波紋效果會(huì)變化)。
1、 如果希望狀態(tài)改變,背景顏色也改變的條件下,修改button顏色
MaterialButton的顏色是根據(jù)主題的colorAccent來(lái)決定的,那么就單獨(dú)給MaterialButton設(shè)置一個(gè)主題
注意,這里要使用android:theme="@style/ButtonStyle"來(lái)設(shè)置主題,不是使用style
并且在主題中,設(shè)置colorAccent為想要的顏色
@color/colorAccent
這樣,就滿(mǎn)足我們的需求了
2、引申一下,MaterialButton的在禁用狀態(tài)下,button的顏色是固定的,全部都是灰色,如果希望修改這個(gè)顏色怎么辦
如果我們的button普通情況下是紅色,在禁用的情況下,讓他遍成淺紅色。
我這邊找了很多方法,但是沒(méi)有直接修改禁用狀態(tài)button的顏色的
我這邊提供了一個(gè)比較取巧的方法:
首先我們知道app:backgroundTint設(shè)置以后,禁用狀態(tài)的下,button顏色不會(huì)改變,那么我們可以把手動(dòng)用代碼,在按鈕禁用狀態(tài)下,把button的alpha設(shè)置一下,讓視覺(jué)效果看起來(lái)像是禁用狀態(tài)的。
style="@style/ButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="12dp"
android:alpha="0.2"
android:enabled="false"
app:backgroundTint="#898989" />
總結(jié)
以上是生活随笔為你收集整理的android 动态改变button样式,Android 修改button颜色的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: uva11942 Lumberjack
- 下一篇: 自定义View基础:Android中的颜