los*_*ion 10 android colors android-layout android-button material-design
材料规格显示禁用的按钮状态,显示为灰色。
https://www.material.io/design/components/buttons.html#toggle-button
我正在从Android的材质组件中使用MaterialButton:https: //www.material.io/develop/android/components/material-button/
但是,将按钮设置为禁用时,按钮的颜色/色调不会改变。
<com.google.android.material.button.MaterialButton
android:id="@+id/disabled_material_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@string/button_label_disabled"/>
Run Code Online (Sandbox Code Playgroud)
只是默认情况下未在Material Android组件中实现?材料组件是否定义了禁用的按钮状态列表?
Gab*_*tti 17
使用默认样式Widget.MaterialComponents.Button,默认选择器用作backgroundTint处理禁用状态而无需任何更改:
它是默认选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_enabled="true"/>
<item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
只需使用:
<com.google.android.material.button.MaterialButton
android:enabled="false"
..>
Run Code Online (Sandbox Code Playgroud)
如果要更改禁用的颜色,可以使用自定义选择器
<com.google.android.material.button.MaterialButton
app:backgroundTint="@color/my_selector"
..>
Run Code Online (Sandbox Code Playgroud)
或者您可以覆盖默认选择器中使用的颜色:
<com.google.android.material.button.MaterialButton
android:theme="@style/button_overlay"
..>
Run Code Online (Sandbox Code Playgroud)
和:
<style name="button_overlay">
<item name="colorOnSurface">@color/my_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)
小智 14
/res/color(在您的res目录中)。<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:color="@color/colorDisabled" />
<item android:color="@color/colorEnabled" />
</selector>
Run Code Online (Sandbox Code Playgroud)
Widget.MaterialComponents.Button样式作为其父样式,而颜色状态列表作为backgrountTint标记:<style name="MaterialButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
<item name="backgroundTint">@color/color_states_materialbutton</item>
</style>
Run Code Online (Sandbox Code Playgroud)
MaterialButton在布局中的上设置样式:<com.google.android.material.button.MaterialButton
style="@style/MaterialButtonStyle"
android:id="@+id/disabled_material_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@string/button_label_disabled"/>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#FD7E14" android:alpha="0.45" />
<item android:color="#FD7E14" />
</selector>
Run Code Online (Sandbox Code Playgroud)
<style name="AppMaterialButton" parent="Widget.MaterialComponents.Button.UnelevatedButton"> <item name="android:backgroundTint">@color/button_disabled</item> </style>
Run Code Online (Sandbox Code Playgroud)
android:enabled="false"到您的按钮小部件。<com.google.android.material.button.MaterialButton
android:enabled="false"
android:id="@+id/button_Join"
style="@style/AppMaterialButton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="next"
app:cornerRadius="0dp" />
Run Code Online (Sandbox Code Playgroud)
您应该使用 ThemeOverlay 并单独应用 Colored 样式
<style name="AccentButton" parent="ThemeOverlay.AppCompat.Dark">
<!-- customize colorButtonNormal for the disable color -->
<!-- customize colorAccent for the enabled color -->
</style>
<Button
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/fragment_login_login_button"
android:theme="@style/AccentButton"
style="@style/Widget.AppCompat.Button.Colored"/>
Run Code Online (Sandbox Code Playgroud)