android 动态改变button样式,Android 修改button颜色
之前覺得button顏色修改,直接修改background就行了,但是會引發一系列的問題。比如原來的波紋效果沒有了,button的狀態改變的時候(例如,被禁用了),button的顏色沒有任何變化。
這里針對這個問題做一個方法的小結
普通Button的解決方法
普通的Button,解決方法比較常見,直接使用Drawable,自己做一個selector,需要點擊的波紋效果的話,加上,之后添加一個例子:
栗子
MaterialButton的解決方法
進入Material設計以后,MaterialButton使用起來和普通button有一些區別。
在將app的主題設置為Theme.MaterialComponents.Light.NoActionBar的時候。
我們的button顏色會默認變成colorAccent的顏色。
MaterialButton的background屬性不起作用了,必須要設置
app:backgroundTint才有效果。
但是設置這個屬性以后,我們的button在改變狀態的時候,顏色就不會發生變化了(點擊的波紋效果會變化)。
1、 如果希望狀態改變,背景顏色也改變的條件下,修改button顏色
MaterialButton的顏色是根據主題的colorAccent來決定的,那么就單獨給MaterialButton設置一個主題
注意,這里要使用android:theme="@style/ButtonStyle"來設置主題,不是使用style
并且在主題中,設置colorAccent為想要的顏色
@color/colorAccent
這樣,就滿足我們的需求了
2、引申一下,MaterialButton的在禁用狀態下,button的顏色是固定的,全部都是灰色,如果希望修改這個顏色怎么辦
如果我們的button普通情況下是紅色,在禁用的情況下,讓他遍成淺紅色。
我這邊找了很多方法,但是沒有直接修改禁用狀態button的顏色的
我這邊提供了一個比較取巧的方法:
首先我們知道app:backgroundTint設置以后,禁用狀態的下,button顏色不會改變,那么我們可以把手動用代碼,在按鈕禁用狀態下,把button的alpha設置一下,讓視覺效果看起來像是禁用狀態的。
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" />
總結
以上是生活随笔為你收集整理的android 动态改变button样式,Android 修改button颜色的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uva11942 Lumberjack
- 下一篇: 疯狂python讲义学习笔记——中十章完