我有一个 Android 应用程序,它使用 Material 设计主题,并通过AppCompat
.
在我的应用程序中有多个Textview's
和。EditText's
我希望将相同的属性应用于所有这些TextView's
以及EditText's
整个应用程序。为了实现这一点,我定义了一个自定义样式,如下所示:
<!-- Base application theme. -->
<style name="ParentTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ArabicTheme" parent="ParentTheme">
<item name="android:editTextStyle">@style/arabicEditText</item>
<item name="android:textViewStyle">@style/arabicTextView</item>
</style>
<style name="arabicEditText" parent="@android:style/Widget.EditText">
<item name="android:gravity">right</item>
<item name="android:ellipsize">end</item>
</style>
<style name="arabicTextView" parent="@android:style/Widget.TextView">
<item name="android:gravity">right</item>
</style>
在我AndroidManifest.xml
的标签下的文件中<Application>
,我设置了android:theme="@style/ArabicTheme"
.
如上面的输出所示,样式TextView
仅应用于。但是,这同样不适用于EditText
.
以防万一,如果我在相应的 Activitivy 的 xml 中为 EditText 明确指定这些属性,如下所示:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="Name"
android:ellipsize="end"
android:gravity="right"
android:ems="10"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="16dp"
android:id="@+id/editText" />
即我已明确添加android:ellipsize="end"
andandroid:gravity="right"
到<EditText>
, 只有这样输出才符合预期:
就像我说的,我有多个 TextView 和 EditText,我无法将这些属性显式添加到所有这些属性中。那么,有没有一种方法可以使用 Styles 或任何其他方法来实现呢?我在这里做错了吗?