当前位置: 首页 > 知识库问答 >
问题:

如何在主题更改时更改浮动动作按钮的颜色?

宦烈
2023-03-14

我想在我的应用程序中应用不同的主题。我想更改导航栏和浮动操作按钮的颜色。

现在我可以更改导航栏的颜色,但浮动操作按钮的颜色没有变化。当主题更改时,如何动态更改工厂的颜色?

风格:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorAccent_500">@color/accent_500</item>
        <item name="colorAccent_700">@color/accent_700</item>

        <item name="windowActionBarOverlay">false</item>

        <item name="windowActionBar">false</item>

        <item name="windowNoTitle">true</item>
        <item name="android:windowBackground">@color/background_material_light</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />


    <style name="BlueTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">#3F51B5</item>
        <item name="colorPrimaryDark">#303F9F</item>
        <item name="colorAccent">#03A9F4</item>

        <item name="windowActionBarOverlay">false</item>

        <item name="windowActionBar">false</item>

        <item name="windowNoTitle">true</item>
        <item name="android:windowBackground">@color/background_material_light</item>
    </style>


    <style name="AppTheme.Solarized">
        <item name="colorPrimary">@color/orange300</item>
        <item name="colorPrimaryDark">@color/orange500</item>
        <item name="colorAccent">@color/solarizedOrange</item>
        <item name="android:textColorPrimary">@color/solarizedBase01</item>
        <item name="android:textColorSecondary">@color/solarizedBase1</item>
    </style>


</resources>

绝妙的:

    <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_fab"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="bottom|end">

    <View
        android:id="@+id/myfab_shadow"
        android:layout_width="72dp"
        android:layout_height="72dp"
        android:layout_gravity="center"
        android:background="@drawable/fab_shadow"
        android:focusable="false" />

    <ImageButton
        android:id="@+id/imgbtn_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/fab_selector"
        android:cropToPadding="true"
        android:padding="10dp"
        android:src="@drawable/ic_add_white_36dp"
        android:stateListAnimator="@animator/fab_elevation_selector" />

</FrameLayout>

晶圆厂选择器:

  <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="@color/colorAccent" />
        </shape>
    </item>

    <item android:state_focused="true">
        <shape android:shape="oval">
            <solid android:color="@color/accent_700" />
        </shape>
    </item>

    <item>
        <shape android:shape="oval">
            <solid android:color="@color/accent_500" />
        </shape>
    </item>

</selector>

谢谢你...

共有3个答案

龚威
2023-03-14

请使用带有浮动按钮的材质形状主题,现在非常简单,无需定制

韩博厚
2023-03-14

谢谢你的回答。但是我刚刚换了晶圆厂选择器。

<item android:state_pressed="true">
    <shape android:shape="oval">
        <solid android:color="?attr/colorAccent" />
    </shape>
</item>

<item android:state_focused="true">
    <shape android:shape="oval">
        <solid android:color="?attr/colorAccent" />

    </shape>
</item>

<item>
    <shape android:shape="oval">
        <solid android:color="?attr/colorAccent" />
    </shape>
</item>

这奏效了。。

冯阳成
2023-03-14

浮动操作按钮根据您的颜色Accent着色

<style name="AppTheme" parent="Base.Theme.AppCompat.Light">
    <item name="colorAccent">@color/accent</item>
</style>

或者从代码:

fab.setBackgroundTintList(getResources().getColorStateList(R.color.blue));

或来自XML:

更改应用程序的属性:背景色调

但似乎您使用的是ImageButton而不是FloatingActionButton,您应该使用:

 <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin" />

并在依赖项中添加:

dependencies {
    compile 'com.android.support:design:23.1.1'
}
 类似资料:
  • 问题内容: 我一直在尝试更改Material的“浮动动作按钮”的颜色,但没有成功。 我尝试添加: 或通过代码: 要么 但以上方法均无效。我也尝试过提出的重复问题中的解决方案,但是没有一个起作用。按钮保持绿色,并且也变成了正方形。 PS知道如何添加波纹效果也很高兴,也无法理解。 问题答案: 如文档中所述,默认情况下,它采用在styles.xml属性colorAccent中设置的颜色。 该视图的背景色

  • 这不起作用。如何改变浮动动作按钮的背景颜色

  • 我一直试图改变材质的浮动动作按钮颜色,但没有成功。 我曾试图补充: 或通过代码: 或 但上述方法都不奏效。我也试过提出的重复问题中的解决方案,但都行不通;按钮保持绿色,也变成了正方形。 附注。如果知道如何添加涟漪效果也会很好,也不能理解。

  • 我 https://github.com/futuresimple/android-floating-action-button 使用了这个库。如何更改主按钮的图像?我想在选择其中一个较小的按钮后立即更改按钮图像。

  • 就像外面的数百个问题一样,我想改变暗示的颜色。本来我想在评论中问另一个这样的问题(未回答),但我没有足够的声誉,所以我在这里问。 我希望当提示在TextInputEditText中时是一种颜色,当它浮动时是另一种颜色。在其他帖子中,答案总是在视图聚焦时如何更改提示。那不是我想要的,我能做到。如果编辑文本不是空的,我想更改提示颜色。我正在使用材料设计textInputLayout和TextInput

  • 问题内容: 我需要更改悬停按钮的颜色。 这是我的解决方案,但是不起作用。 问题答案: 表示“正在悬停的链接是该类链接的子链接”。 代替。