FrameLayout没有正确使用样式

时间:2015-04-15 16:58:06

标签: android android-layout android-fragments android-styles android-framelayout

我对这个网站非常满意。我经常学习。

今天我怀疑已经出现了。我想把一个样式放到FrameLayout上。并且不要使用。

风格如下:

<style name="textAsk">
        <item name="android:textColor">#000000</item>
        <item name="android:padding">2dp</item>
        <item name="android:minWidth">88dp</item>
        <item name="android:minHeight">36dp</item>
        <item name="android:textSize" >18dp</item>
        <item name="android:layout_marginRight">12dp</item>
        <item name="android:layout_marginLeft">12dp</item>
        <item name="android:layout_marginTop">5dp</item>
    </style>

我在FrameLayout中显示正在更改的片段。每个片段都包含一个带有文本的TextView。

有很多片段,我想为所有TextView设置一个样式,一个常见的样式,以节省时间,而不是在每个TextView中设置样式。

我试过这段代码:

<FrameLayout
    android:id="@+id/fragmentaskGRP1"
    android:layout_width="match_parent"
    android:layout_height="450dp"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp"
    style="@style/textAsk"/>

但唯一对我有用的是:

    <item name="android:layout_marginRight">12dp</item>
    <item name="android:layout_marginLeft">12dp</item>
    <item name="android:layout_marginTop">10dp</item>

非常感谢你的一切

3 个答案:

答案 0 :(得分:0)

问题在于,儿童观点不会从封闭的ViewGroup继承样式。样式可以包含父项,但在您的情况下,TextView不会从FrameLayout获取这些属性。

答案 1 :(得分:0)

FrameLayout不支持textColortextSize属性(API)。所以它从未为FrameLayout设置并被忽略。有关详细信息,请参阅指南Styles and Themes中的样式属性部分。

指南引用:

  

但是,如果将样式应用于不支持所有样式属性的View,则View将仅应用受支持的属性,而忽略其他属性。

在单独的样式定义中定义与文本相关的样式,并将其用于匹配视图,例如TextView

答案 2 :(得分:0)

其他样式不会应用于片段。你必须创建另一个逻辑来将样式应用于所有片段(最有可能你必须为每个片段单独应用样式)

FrameLayout与文字无关,因此textColor, textSize无效。

minWidth, minHeight是View的属性,它认为它们应该有用。