如何更改 Android 布局样式中继承样式的背景颜色?

Posted

技术标签:

【中文标题】如何更改 Android 布局样式中继承样式的背景颜色?【英文标题】:How do I change the background color of an inherited style in Android layout styles? 【发布时间】:2015-02-06 23:07:10 【问题描述】:

如果我更改子样式的背景,则它不会应用父样式的任何其他样式!

<style name="RemoteButton">
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:textColor">#556699</item>
    <item name="android:textSize">20dp</item>
    <item name="android:layout_margin">3dp</item>
</style>

<style name="ControlButton" parent="RemoteButton">

    <!-- THIS CAUSES IT TO IGNORE ALL THE PARENT STYLES SUCH AS MARGIN -->
    <item name="android:background">#E87E04</item>

    <item name="android:textColor">#ffffff</item>
</style>

这不起作用(被忽略):

<item name="android:colorBackground">#E87E04</item>

如何给子样式设置不同的背景颜色?

【问题讨论】:

【参考方案1】:

当您创建自定义样式或主题并从它继承时,请勿使用 parent 属性,而不是此

<style name="ControlButton" parent="RemoteButton">

    <!-- THIS CAUSES IT TO IGNORE ALL THE PARENT STYLES SUCH AS MARGIN -->
    <item name="android:background">#E87E04</item>

    <item name="android:textColor">#ffffff</item>
</style>

这样做,注意“。”字符。

<style name="RemoteButton.ControlButton">

    <!-- THIS CAUSES IT TO IGNORE ALL THE PARENT STYLES SUCH AS MARGIN -->
    <item name="android:background">#E87E04</item>

    <item name="android:textColor">#ffffff</item>
</style>

你只是继续使用“。”当您需要继承自定义样式时使用字符。

【讨论】:

我试过了,但仍然没有应用适当的边距! 部分视图不支持边距。 我知道这样做是因为当我使用父样式时它会应用边距 您想在哪个视图上应用此自定义样式? 我正在更改应用程序主要活动中片段的TableRowTableLayout 中的Button 视图

以上是关于如何更改 Android 布局样式中继承样式的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图

如何自定义android Button样式

如何在 Android 中更改标签样式?

如何更改android edittext的样式,在弹出软键盘页面上加入button

如何自定义Android Dialog的样式?

在代码隐藏中更改中继器项目的样式?