86

EditTextアプリケーション内のすべての を一貫した外観にしようとしています。私はこのようなことができることを知っています:

<style name="App_EditTextStyle">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

次に、これを行うことで、特定のEditTextスタイルをこのスタイルにすることができます。

<EditText ...
    style="@style/App_EditTextStyle
    ...>

しかし、この方法では、アプリケーションのすべてのスタイルを個別に設定することを覚えておく必要がEditTextあります。これは、エラーが発生しにくいとは言えませんが、面倒です。

これをテーマか何かの一部にする方法はありますか?これは、このスタイルをすべての に関連付ける必要がないためですEditText。この架空のコード ブロックのようなもの:

<style name="App_Theme" parent="@android:style/Theme.Holo">
   ... 
   <item name="android:EditTextSyle">@style/App_EditTextStyle</item>
   ...
<style>

そして、私のAndroidManifest.xml中には次のようなものがあります:

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

そして出来上がり!EditTextインスタンスごとにスタイルを指定しなくても、すべての myに一貫したスタイルがあります。

4

5 に答える 5

161

EditTextカスタム テーマのスタイル (named editTextStyle:) ) を指す属性をオーバーライドします。

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="android:editTextStyle">@style/App_EditTextStyle</item>
</style>

カスタムスタイルを作成して拡張しますWidget.EditText

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

編集:

より新しい AppCompat 関連のテーマを使用している場合は、android プレフィックスなしで editTextStyle 属性を使用します。

<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>
于 2012-06-05T20:09:27.773 に答える
53

@Luksprogの答えは正しいですが、うまくいきません。いくつかの実験の後、editTextStyle から Android 名前空間を削除すると、それが機能することがわかりました。

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>

拡張するカスタム スタイルを作成するWidget.EditTextか、AppCompat テーマを使用する場合Widget.AppCompat.EditText:

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>
于 2015-12-23T05:03:09.677 に答える
18

まず、EditText のスタイルを定義します。親スタイルがandroid:Widget.EditText

<style name="CustomEditTextStyle" parent="android:Widget.EditText">

    <item name="android:textColor">#0F0F0F</item>
    <!-- ... More items here if needed ... -->
</style>

その後、android:editTextStyleカスタム テーマの属性をオーバーライドします。サポート ライブラリを使用している場合は、属性もオーバーライドする必要があることに注意してくださいeditTextStyle(android 名前空間なし)。

<style name="App_Theme" parent="...">
   <item name="android:editTextStyle">@style/CustomEditTextStyle</item>
   <item name="editTextStyle">@style/CustomEditTextStyle</item> <!-- For compatibility with the support library -->
</style>
于 2016-04-15T18:42:06.113 に答える
-1
<style name="App_Theme" parent="@android:style/Theme.Holo">    
    <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item>
</style>
于 2014-09-16T09:40:35.950 に答える