2016-08-27 143 views
0

有佈局的我app_style.xml「安卓主題」 屬性,忽略重力

<style name="EditText.LargePassword" parent="Widget.AppCompat.EditText"> 
    <item name="android:gravity">center_horizontal</item> 
    <item name="android:imeOptions">flagNoExtractUi</item> 
    <item name="android:inputType">numberPassword</item> 

    <item name="android:textColorPrimary">@color/white</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textColorHint">@color/white</item> 
    <item name="android:textSize">56sp</item> 

    <item name="colorControlNormal">@color/white</item> 
    <item name="colorControlActivated">@color/white</item> 
    <item name="colorControlHighlight">@color/white</item> 
</style> 

而且部分:

<EditText 
    android:id="@+id/password_edit_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/giant_margin" 
    android:layout_marginRight="@dimen/giant_margin" 
    android:theme="@style/EditText.LargePassword" 
    tools:text="12345" 
    tools:ignore="TextFields" 
    /> 

正如你所看到的,我申請通過android:theme屬性EditText.LargePassword風格:

via android:theme

有一個問題:應用了每個屬性,除了android:gravity

好吧,讓我們嘗試用style屬性:

style="@style/EditText.LargePassword" 

轟!指示器和光標都消失了:

enter image description here

但現在android:gravity="center_horizontal"作品。

當我讀到,style==theme,但style並不適用於兒童View。有什麼區別嗎?這是一個錯誤嗎?

回答

2

樣式和主題雖然相似並不完全相同。風格僅適用於一個特定視圖,而主題將應用於View/ViewGroup/Activity及其所有子級。

就你而言,你實際上是將來自樣式和主題的屬性混合到一個設置中,這就是爲什麼它不能正常工作。爲了得到兩個你需要採取三個colorControl屬性,並將它們定義爲一個主題:

<style name="LargePasswordTheme" > 
    <item name="colorControlNormal">@color/white</item> 
    <item name="colorControlActivated">@color/white</item> 
    <item name="colorControlHighlight">@color/white</item> 
</style> 

其餘可以留作風格。然後,你既可以這樣,你的樣式到的EditText:

<EditText 
    android:id="@+id/password_edit_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/giant_margin" 
    android:layout_marginRight="@dimen/giant_margin" 
    android:theme="@style/LargePasswordTheme" 
    android:style="@style/EditText.LargePassword" 
    tools:text="12345" 
    tools:ignore="TextFields" 
    /> 

具有良好的解釋進一步閱讀可以發現herehere