有我的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"
/>
如您所见,我通过EditText.LargePassword
属性应用android:theme
样式:
存在问题:应用了每个属性,android:gravity
除外。
好的,让我们试试style
属性:
style="@style/EditText.LargePassword"
轰!指标和光标消失了:
但现在android:gravity="center_horizontal"
有效。
在我阅读时,style
== theme
,但style
不适用于View
的孩子。有什么不同吗?这是一个错误吗?
答案 0 :(得分:3)
类似的样式和主题并不完全相同。样式仅适用于一个特定视图,而主题将应用于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"
/>