2012-08-25 25 views
1

我想用一些填充來設置LinearLayout的樣式。原因是因爲我有7-8個相似的結構化佈局,我希望它們可以同步以使調整更容易。使用Android styles.xml時是否有規則或例外

因此,這裏是我的佈局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

你有什麼'QuestionPane'? – Luksprog

+0

<項目名稱= 「機器人:背景」> @顏色/ question_bg <項目名= 「機器人:填充」> 10dp <項目名= 「機器人:paddingLeft」> 50dp – RobGThai

+0

而且它延伸什麼(如果延伸的東西)? – Luksprog

回答

4

經過一些測試後,問題似乎出現,因爲父類QuestionPane樣式中的android:padding屬性設置爲阻止任何重寫子樣式中的其他填充屬性。我不知道爲什麼會這樣,但我知道如何通過它來傳遞,避免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> 

這應該使填充出現無其他修改到你當前代碼。

+0

良好的通話。那麼「」的目的是什麼?在「QuestionPane.AnswerPane」中?它是從QuestionPane級聯到AnswerPane的風格嗎? – RobGThai

+0

@RobGThai該點表示先前聲明樣式的子類。 – Luksprog