样式,最小高度/最大高度:我无法让最大高度覆盖主题的最小高度。

7
我认为更“全局”的样式总是被更“本地”的样式覆盖。例如,如果我重新定义所有按钮的textSize=40dip(将该样式应用为应用程序的主题),然后对特定按钮应用另一个样式,该样式指定textSize=10dip,那么该特定按钮应该获得10dip的textSize。
通常情况下就是这样。但是在maxHeight方面却不是这样。下面是场景:
在我的styles.xml中,我有一个样式,其中我继承了默认按钮并更改了textSize和minHeight,然后另一个样式设置了一些其他值(但也从按钮继承),如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Button" parent="@android:style/Widget.Button">
    <item name="android:textSize">26dip</item>
    <item name="android:minHeight">60dip</item>
</style>

<style name="ButtonHeader" parent="@android:style/Widget.Button">
    <item name="android:textSize">18dip</item>
    <item name="android:minWidth">70dip</item>
    <item name="android:maxHeight">10dip</item>
</style>
</resources>    

我将第一种样式应用于我的Activity作为主题,这使得所有的按钮变大了(minHeight=60dip)。但是我有一个“标题”(在其中有一些其他的按钮),我不希望它们有60dip的最小高度,而是想要使用ButtonHeader,将maxHeight设置为10dip。

在我的header.xml中,它的外观如下:

<Button style="@style/ButtonHeader" android:text="UPP" android:id="@+id/Header_Button_UPP" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
<Button style="@style/ButtonHeader" android:text="ALT" android:id="@+id/Header_Button_ALT" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
<Button style="@style/ButtonHeader" android:text="NAV" android:id="@+id/Header_Button_NAV" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
<Button style="@style/ButtonHeader" android:text="HIS" android:id="@+id/Header_Button_HIS" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>

我正在特定地设置按钮的样式,覆盖“全局”主题。这在某些部分起作用;这些标题按钮的文本大小正确地设置为18dip,但最大高度被忽略 - 这些按钮的高度也增加到60dip。
如果我在ButtonHeader的样式中设置android:minHeight =“100dip”,则标题中的按钮将增大到100dip,覆盖主题。但是,如上所述,当我使用android:maxHeight时,什么也不会发生。
我错过了什么?
2个回答

5
你的ButtonHeader样式不应该覆盖minHeight属性吗?看起来你最终得到了minHeight = 60dp和maxHeight = 10dp,而minHeight获胜。如果你明确将minHeight设置为其他值,就不应该有这个问题。

好的,我按照你说的覆盖了最小高度=)不知道为什么我之前没想到。我只是认为覆盖 maxHeight 应该可以解决问题。听起来还蛮合理的。无论如何,问题得到解决,奖励已发放=) - Ted

0

据我理解,您有两种不同的按钮样式(Button - HeaderButton),在HeaderButton样式中,您设置了minHeight和maxHeight(maxHeight有效),现在MinHeight遇到了问题。

我实现了您的代码并发现您的MinHeight不适用于18dip文本大小,因此您应该要么减小文本大小,要么增加MinHeight大小。

请告诉我您的情况。


嘿!没错,“ButtonHeader”中的“maxHeight”太小了,我知道。我尝试了各种值,但都没有帮助。 “theme”覆盖了“ButtonHeader-style”,使按钮(在标题中)变大,无论我在“ButtonHeader”中放置多少maxHeight =( - Ted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接