1. ホーム
  2. android

[解決済み] すべてのEditTextに一貫したスタイルを設定する(例)

2023-05-07 06:11:11

質問

私は、すべての 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 は一貫したスタイルを持ち、各インスタンスのスタイルを指定する必要はありません。

どのように解決するのですか?

を指す属性をオーバーライドして EditText スタイル(名前 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>