FrameLayout 没有正确使用样式

FrameLayout not use the styles correctly

我对这个网站很满意。我学到了很多。

今天我的疑惑出现了。我想为 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 中发生变化的片段。每个 Fragment 都包含一个带有文本的 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>

非常感谢你所做的一切

问题是子视图不会从它们的封闭 ViewGroup 继承样式。样式可以有父项,但在您的情况下 TextView 不会从 FrameLayout.

中获取这些属性

FrameLayout 不支持 textColortextSize 属性(API). So it's never set for the FrameLayout and ignored. See the style properties section from the guide Styles and Themes 了解更多信息。

引自指南:

However, if you apply a style to a View that does not support all of the style properties, the View will apply only those properties that are supported and simply ignore the others.

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

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

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

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