使用Android styles.xml时是否存在规则或异常

时间:2012-08-25 10:19:52

标签: android xml styles

我正在尝试使用一些填充来设置LinearLayout的样式。原因是我有7-8个类似的结构化布局,我希望它们能够同步,以便更容易调整。

所以这是我的布局xml:

<LinearLayout
    style="@style/QuestionPane.AnswerPane"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_yes"
        style="@style/ButtonStyle"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:text="Yes" />

    <Button
        android:id="@+id/btn_no"
        style="@style/ButtonStyle"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="No" />
</LinearLayout>

和styles.xml:

<style name="QuestionPane">
    <item name="android:background">@color/question_bg</item>
    <item name="android:padding">10dp</item>
    <item name="android:paddingLeft">50dp</item>
</style>

<style name="QuestionPane.AnswerPane">
    <item name="android:paddingLeft">100dp</item>
    <item name="android:paddingTop">20dp</item>
    <item name="android:paddingBottom">20dp</item>
    <item name="android:gravity">top|left</item>
    <item name="android:background">@color/report_purple</item>
</style>

正确应用了背景颜色。但是,未应用填充属性。我有带衬垫的按钮样式,它们工作得很好。

<style name="ButtonStyle" parent="@android:style/Widget.Button">
    <item name="android:textSize">@dimen/text_middle</item>
    <item name="android:textColor">#FFFFFFFF</item>
    <item name="android:background">@drawable/button_bg</item>
    <item name="android:textColor">@color/button_text</item>
    <item name="android:paddingLeft">30dp</item>
    <item name="android:paddingRight">30dp</item>
</style>

那么这里的问题是什么?是否有一些我无法通过styles.xml做的属性?

1 个答案:

答案 0 :(得分:4)

经过一些测试后,问题似乎出现了,因为父android:padding样式中的QuestionPane属性,设置该值会阻止子样式中其他填充属性的覆盖。我不知道为什么会这样,但我知道如何通过它,避免android:padding属性并为每个填充属性设置填充:

<style name="QuestionPane">
    <item name="android:background">@color/question_bg</item>
    <item name="android:paddingTop">10dp</item>
    <item name="android:paddingBottom">10dp</item>
    <item name="android:paddingRight">10dp</item>
    <item name="android:paddingLeft">50dp</item>
</style>

这应该使填充显示而不对您当前的代码进行其他修改。