我正在尝试使用一些填充来设置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做的属性?
答案 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>
这应该使填充显示而不对您当前的代码进行其他修改。