私はAndroidデザインライブラリのTextinputLayout
を使っています。しかし、EditText
内のTextinputLayout
のヒント色、ラベル色、および下線色をカスタマイズすることはできませんでした。助けてください。
<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item>
詳細については、 THIS THREAD を確認してください。
<style name="TextAppearance.App.TextInputLayout" parent="@Android:style/TextAppearance">
<item name="Android:textColor">@color/main_color</item>
そしてそれを次のように使います。
<Android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout" >
更新:
ヒントカラーをフローティングラベルではないときに変更する場合は、次のように使用します。
<Android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
Android:textColorHint="#c1c2c4">
ありがとう@AlbAtNf
Fedor Kazakov とその他の回答に基づいて、私はデフォルトの設定を作成しました。
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- 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="Widget.Design.TextInputLayout" parent="AppTheme">
<item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item>
<item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item>
<item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item>
<item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item>
</style>
<style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint">
<!-- Floating label appearance here -->
<item name="Android:textColor">@color/colorAccent</item>
<item name="Android:textSize">20sp</item>
</style>
<style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error">
<!-- Error message appearance here -->
<item name="Android:textColor">#ff0000</item>
<item name="Android:textSize">20sp</item>
</style>
</resources>
activity_layout.xml
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Text hint here"
Android:text="5,2" />
</Android.support.design.widget.TextInputLayout>
焦点を当てた:
焦点がない場合:
エラーメッセージ:
これ Blog Post はEditText
name__で囲まれたAutoCompleteTextView
name__とTextInputLayout
name__のさまざまなスタイルの側面を説明します。
EditText
name__およびAppCompat lib 22.1.0 +の場合、いくつかのテーマ関連設定でテーマ属性を設定できます。
<style name="StyledTilEditTextTheme">
<item name="Android:imeOptions">actionNext</item>
<item name="Android:singleLine">true</item>
<item name="colorControlNormal">@color/greyLight</item>
<item name="colorControlActivated">@color/blue</item>
<item name="Android:textColorPrimary">@color/blue</item>
<item name="Android:textSize">@dimen/styledtil_edit_text_size</item>
</style>
<style name="StyledTilEditText">
<item name="Android:theme">@style/StyledTilEditTextTheme</item>
<item name="Android:paddingTop">4dp</item>
</style>
そしてそれらをEditText
name__に適用します。
<EditText
Android:id="@+id/etEditText"
style="@style/StyledTilEditText"
AutoCompleteTextView
name__では、TextInputLayout
name__でラッピングしてこのテーマを適用すると、浮動ラベルの動作が壊れるため、事態はもっと複雑になります。これをコードで修正する必要があります。
private void setStyleForTextForAutoComplete(int color) {
Drawable wrappedDrawable = DrawableCompat.wrap(autoCompleteTextView.getBackground());
DrawableCompat.setTint(wrappedDrawable, color);
autoCompleteTextView.setBackgroundDrawable(wrappedDrawable);
}
そしてActivity.onCreate
では:
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> {
if(hasFocus) {
setStyleForTextForAutoComplete(getResources().getColor(R.color.blue));
} else {
if(autoCompleteTextView.getText().length() == 0) {
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
}
}
});
この属性をEdittextタグに追加してお楽しみください。
Android:backgroundTint="@color/colorWhite"
TextInputLayout
のバー/線の色とヒントのテキストの色(アクセントの色は通常)を変更する場合は、次のスタイルを作成します。
<style name="MyStyle">
<item name="colorAccent">@color/your_color</item>
</style>
それからthemeとしてあなたのTextInputLayout
にそれを適用してください:
<Android.support.design.widget.TextInputLayout
...
app:theme="@style/MyStyle" />
これは基本的に(全体のアクティビティとは対照的に)theme(スタイルではない)を1つのビューに設定します。
<style name="Widget.Design.TextInputLayout" parent="Android:Widget">
<item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item>
<item name="errorTextAppearance">@style/TextAppearance.Design.Error</item>
</style>
あなたはレイアウトのためにこのスタイルをオーバーライドすることができます
また、内部のEditTextアイテムのスタイルも変更できます。
<style name="EditScreenTextInputLayoutStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorControlNormal">@color/actionBar_background</item>
<item name="colorControlActivated">@color/actionBar_background</item>
<item name="colorControlHighlight">@color/actionBar_background</item>
<item name="colorAccent">@color/actionBar_background</item>
<item name="Android:textColorHint">@color/actionBar_background</item>
</style>
このスタイルをTextInputLayoutに適用します
Dimitrios Tsigouris in 彼のブログ記事はこちら で非常によく説明されているように、TextinputLayout
はビューではなくLayout
です。したがって、Style
は必要ありません。これはViews
専用ですが、Theme
を使用してください。ブログ投稿に続いて、私は次の解決策になりました。
styles.xml
をで始めます
<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
<!-- reference our hint & error styles -->
<item name="Android:textColor">@color/your_colour_here</item>
<item name="Android:textColorHint">@color/your_colour_here</item>
<item name="colorControlNormal">@color/your_colour_here</item>
<item name="colorControlActivated">@color/your_colour_here</item>
<item name="colorControlHighlight">@color/your_colour_here</item>
</style>
そしてあなたのレイアウトにを追加します
<com.google.Android.material.textfield.TextInputLayout
Android:theme="@style/TextInputLayoutAppearance"
...