在每个编辑文本的活动中应用自定义主题

时间:2013-05-17 05:13:43

标签: android themes

我想更改应用中所有编辑文字的背景形状。我像这样在drawable文件夹中创建了xml文件。

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp"/>
    <stroke android:width="1sp" android:color="@android:color/darker_gray"/>
    <solid  android:color="@android:color/white"/>
    <padding android:top="5dp" android:left="5dp" android:right="5dp" android:bottom="5dp"/>
</shape>

我在styles.xml文件中创建了样式标记。

     <style name="editTxt_theme" parent="@android:style/Widget.EditText">
        <item name="android:background">@drawable/edittxt_shape</item>
    </style>

我将这个主题应用到我的活动中。但它应用了所有其他小部件。有什么不对的吗?

感谢。

1 个答案:

答案 0 :(得分:5)

首先,您需要在styles.xml中为您的应用定义主题,并使用android:editTextStyle为所有EditText视图定义自定义样式,如下所示:

<style name="MyAppTheme" parent="android:Theme.Light">
    <item name="android:editTextStyle">@style/CustomEditTextStyle</item>
</style>

<style name="CustomEditTextStyle">
    <item name="android:background">@drawable/edittxt_shape</item>
    <item name="android:clickable">true</item>
    <item name="android:enabled">true</item>
    <item name="android:focusable">true</item>
    <item name="android:focusableInTouchMode">true</item>
    <item name="android:gravity">center_vertical</item>
</style>

现在剩下的就是告诉你的应用在你的清单中使用你的主题:

<application
    android:theme="@style/MyAppTheme" >
    ...
</application>

这样,您就不需要在所有style次观看中添加EditText个属性。