このスレッド。 を使用して、EditTextの下線の色を変更しようとしました。
私も同じことをしました-これはEditText
とAndroid:background
として設定され @drawable/edt_bg_selector
。
<EditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:ems="10"
Android:id="@+id/editText4"
Android:layout_weight="1"
Android:elevation="0dp"
Android:background="@drawable/edt_bg_selector" />
僕の edt_bg_selector
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:drawable="@drawable/edt_bg_selected" />
<item Android:state_focused="false" Android:drawable="@drawable/edt_bg_normal" />
</selector>
... edt_bg_normal.xml
.。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item
Android:bottom="1dp"
Android:left="-2dp"
Android:right="-2dp"
Android:top="-2dp">
<shape Android:shape="rectangle" >
<stroke
Android:width="1px"
Android:color="@color/colorWhite" />
<solid Android:color="#00FFFFFF" />
<padding
Android:bottom="5dp"
Android:left="5dp"
Android:right="5dp"
Android:top="5dp" />
</shape>
</item>
</layer-list>
...そして最後にedt_bg_selected.xml
。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item
Android:bottom="1dp"
Android:left="-2dp"
Android:right="-2dp"
Android:top="-2dp">
<shape Android:shape="rectangle" >
<stroke
Android:width="1px"
Android:color="@color/colorWhite" />
<solid Android:color="#00FFFFFF" />
<padding
Android:bottom="5dp"
Android:left="5dp"
Android:right="5dp"
Android:top="5dp" />
</shape>
</item>
</layer-list>
このコードを使用すると、Android Studioのデザインエディターで下線の色が白に変わったことがわかります。しかし、このプロジェクトをAndroidデバイスで実行すると、変更は行われていません。選択されたEditText
の下線は私のprimaryColor
であり、選択されていないEditText
は黒です。
Android Studioデザインエディター:
プロジェクトはAndroidデバイス:
これは、アプリケーションの選択したテーマと関係がありますか?または私は何を逃したのですか?
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Something or Other"
Android:backgroundTint="@Android:color/holo_green_light" />
注:APレベル21以降でのみ機能します。
次の属性をアクティビティテーマに追加します。
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorControlNormal">@Android:color/white</item>
<item name="colorControlActivated">@Android:color/white</item>
<item name="colorControlHighlight">@Android:color/white</item>
</style>
プログラムで次の行を実装するだけです。
inputText.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.error), PorterDuff.Mode.SRC_ATOP);
inputText
はEditText
オブジェクトです。
わかりました。何が起こったのかわかりませんが、上記で投稿したコードは機能します。何も変更していませんが、Androidスタジオを再起動しました。
これを投稿する前に、[ビルド]> [プロジェクトの再構築]でプロジェクトの再構築を行いましたが、役に立ちませんでした。
なぜこれが起こったのか、この場合どうすればいいのかを誰かが説明できればありがたいのですが、問題は解決しました。