1

我正在尝试使用一些填充来设置 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 做的属性?

4

1 回答 1

4

经过一些测试,问题似乎是由于android:paddingQuestionPane样式中的属性而出现的,设置该值会阻止对子样式中其他填充属性的任何覆盖。我不知道为什么会发生这种情况,但我知道如何绕过它,避免使用该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>

这应该使填充出现而无需对当前代码进行其他修改。

于 2012-08-25T16:53:35.553 回答