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: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>

これにより、現在のコードに他の変更を加えることなく、パディングが表示されます。

于 2012-08-25T16:53:35.553 に答える