Android 在活动中为每个编辑文本应用自定义主题
我想更改应用程序中所有编辑文本的背景形状。我在drawable文件夹中创建了xml文件,如下所示Android 在活动中为每个编辑文本应用自定义主题,android,themes,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:bottomRightR
<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>
@可绘制/编辑TXT_形
我把这个主题应用到我的活动中。但它应用了所有其他小部件。有什么问题吗
谢谢。首先,您需要在
style.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>
@样式/自定义编辑文本样式
@可绘制/编辑TXT_形
真的
真的
真的
真的
中心垂直
现在只剩下告诉你的应用程序在清单中使用你的主题:
<application
android:theme="@style/MyAppTheme" >
...
</application>
...
这样,您就不需要在所有的
EditText
视图中添加style
属性。首先,您需要在style.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>
@样式/自定义编辑文本样式
@可绘制/编辑TXT_形
真的
真的
真的
真的
中心垂直
现在只剩下告诉你的应用程序在清单中使用你的主题:
<application
android:theme="@style/MyAppTheme" >
...
</application>
...
这样,您就不需要在所有的
EditText
视图上添加style
属性。“但它应用了所有其他小部件”这是什么意思??你的应用程序有小部件吗?你的小部件的编辑文本样式也改变了吗?我的意思是所有的文本视图和操作栏都改变了。“但它应用了所有其他小部件”你这是什么意思??你的应用程序有小部件吗?你的小部件的编辑文本样式也改变了吗?我的意思是所有的文本视图和操作栏都改变了。我还没有找到一个很好的参考,但是你可以四处窥探。模式通常是viewmestyle
(例如buttonStyle
,textviewmestyle
),但我无法在编辑文本中输入值。和操作栏。您也可以在自定义样式中设置EditText
的其他属性。请参阅上面更新的答案,并尝试将android:enabled
属性设置为true。您可以在其中定义与各个视图相关的任何内容。如果它仍然不起作用,那么发布更新的代码会有所帮助。这就是我一直在做的,从来没有遇到过问题。不客气!享受这个新把戏吧,它对自定义主题非常有用。:)我还没有找到一个很好的参考书,但你可以四处窥探。模式通常是viewmestyle
(例如buttonStyle
,textviewmestyle
),但我无法在编辑文本中输入值。和操作栏。您也可以在自定义样式中设置EditText
的其他属性。请参阅上面更新的答案,并尝试将android:enabled
属性设置为true。您可以在其中定义与各个视图相关的任何内容。如果它仍然不起作用,那么发布更新的代码会有所帮助。这就是我一直在做的,从来没有遇到过问题。不客气!享受这个新把戏吧,它对自定义主题非常有用。:)