【问题标题】:Styling theme buttons android (xml)样式化主题按钮 android (xml)
【发布时间】:2021-07-01 13:19:27
【问题描述】:

我的应用程序中的按钮样式有问题,我尝试过使用选择器、主题,但这些都对我不起作用(或起作用但未达到预期),任何想法我应该改变什么来设置它正确吗?

代码:

其中一个按钮(深色主题之一(应将颜色从黑色交换为紫色(激活时))

        <Button
            android:id="@+id/dark_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:theme="@style/buttonDark"
            android:text="dark"
            app:icon="@drawable/ic_moon"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

风格:

    <style name="buttonDark" >
        <item name="android:state_active">@color/black</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:state_pressed">@color/violet</item>
    </style>

亮模式和暗模式的表示(以及两者中的按钮):

【问题讨论】:

  • 您使用的是材质组件主题吗?
  • 是(“实现”com.google.android.material:material:1.4.0-alpha02“”)

标签: android kotlin user-interface button android-button


【解决方案1】:

您可以定义自定义样式:

    <Button
        style="@style/App.Button"

与:

<style name="App.Button" parent="Widget.MaterialComponents.Button">
    <item name="backgroundTint">@color/mtrl_btn_bg_custom_selector</item>
    <item name="android:textColor">@color/mtrl_btn_text_custom_color_selector</item>
    <item name="rippleColor">@color/mtrl_btn_custom_ripple_color</item>
</style>

背景色调选择器定义背景颜色:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/black" android:state_enabled="true"/>
    <item android:alpha="0.12" android:color="...."/> <!-- disabled -->
</selector>

文本颜色选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_enabled="true"/>
    <item android:alpha="0.38" android:color="...."/> <!-- disabled -->
</selector>

波纹选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item  android:color="@color/violet500" android:state_pressed="true"/>
    <item android:color="@color/..." android:state_focused="true" android:state_hovered="true"/>
    <item android:color="@color/..." android:state_focused="true"/>
    <item  android:color="@color/..." android:state_hovered="true"/>
    <item  android:color="@color/..."/>
</selector>

【讨论】:

  • 我不知道为什么,但它也没有给出任何结果(即使我已将“主题”添加到其中一个按钮并使用您提供的代码进行了调整)跨度>
  • @icecube 是一种风格。使用 style="@style/App.Button" 将其应用于按钮
  • 是的,我已经这样做了,但是没有用,但是我可能在这里找到了解决方案:link 我想我可以设置它
  • @icecube 有什么问题?我试过了,效果很好。
  • 我一直在使用“Theme.MaterialComponents.DayNight.DarkActionBar”而不是“Theme.AppCompat.Light.NoActionBar”,因此按钮没有改变样式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2019-02-12
  • 2014-09-01
相关资源
最近更新 更多