テキストプロパティの下のEditText下線


108

エディットテキストの下の青色を変更したいのですが、どのプロパティなのかわかりません。

別の背景色を使用してみましたが、うまくいきませんでした。

以下の画像を添付しました:

ここに画像の説明を入力してください


これは、特定のAPIレベル/電話で使用可能なEditTextの背景です。つまり、アプリが別のスマートフォンで実行されている場合、別の背景が表示される可能性があります。
Sherif elKhatib 2014年

あなたのカスタムのEditText背景作成
Vijju

1
前のスレッドの重複の可能性があります。このチェックしてくださいstackoverflow.com/a/4585750/1129468を
gokhanakkurt

以下のコードを使用して、機能しているかどうかをお知らせください。
InnocentKiller

回答:


90

EditTextの下線の色をプログラムで設定するのは実際にはかなり簡単です(コードを1行だけ)。

色を設定するには:

editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);

色を削除するには:

editText.getBackground().clearColorFilter();

注:EditTextにフォーカスがある場合、設定した色は有効にならず、代わりにフォーカスの色が適用されます。

APIリファレンス:

Drawable#setColorFilter

Drawable#clearColorFilter


4
Xamarin for Androidでも動作し、カスタムレンダラーOnElementChangedで実行できますControl.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
David Conlisk

@DavidConliskどちらRendererをオーバーライドしますか?これを検索バーで機能させる方法を理解しようとしています。
Nick N.

@NickN。これをピッカーに使用していたので、PickerRendererをオーバーライドしました。それはあなたに最も適したレンダラーで動作するはずです(理論的には!)
David Conlisk

1
私はそれをすべきだと思いますが、問題はがSearchBarRendererタイプではないことですEditText。動作しません。
Nick N.

85

XMLレイアウトで使用android:backgroundTint=""しますEditText

api <21の場合AppCompatEditText、サポートライブラリから使用できますapp:backgroundTint=""


14
これは現在、API 21以降でのみ機能します。後方サポートはありません。
John Shelley

2
これは、最もシンプルで簡潔なソリューションです。
IgorGanapolsky 2015

@JohnShelleyは、以下の私の答えを参照しください。これはロリポップ以前のバージョンで機能します。
スーフィアン2016年

3
android:background="@null"API <21のデバイス用。
Hammad Nasir 2017年

4
21未満のAPIでこの属性を機能させるには、androidではなくapp(xmlns:app = " schemas.android.com/apk/res-auto")名前空間を使用する必要があります。
Andrei K.

38

EditText(フォーカス、有効、アクティブ化)の状態ごとに、色ではなく、異なる背景画像を使用する必要があります。

http://android-holo-colors.com/

上記のサイトでは、Holoテーマの多くのコンポーネントから画像を取得できます。「EditText」と希望の色を選択するだけです。ページの下部にプレビューが表示されます。

.zipファイルをダウンロードし、プロジェクト内のリソース(画像とXML)をコピーして貼り付けます。

XMLの名前がapptheme_edit_text_holo_light.xml(または類似のもの)の場合:

  1. XMLの「styles.xml」に移動して、カスタムEditTextスタイルを追加します。

    <style name="EditTextCustomHolo" parent="android:Widget.EditText">
       <item name="android:background">@drawable/apptheme_edit_text_holo_light</item>
       <item name="android:textColor">#ffffff</item>
    </style>
    
  2. ちょうどあなたの中でこれをしてくださいEditText

    <EditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       style="@style/EditTextCustomHolo"/>
    

それでおしまいです。お役に立てば幸いです。


24

これは、Androidの新旧バージョンで正常に機能します(API 10でも正常に機能します)。

このスタイルを以下で定義しますstyles.xml

<style name="EditText.Login" parent="Widget.AppCompat.EditText">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorHint">@android:color/darker_gray</item>
    <item name="colorAccent">@color/blue</item>
    <item name="colorControlNormal">@color/blue</item>
    <item name="colorControlActivated">@color/blue</item>
</style>

そして今、あなたのXMLで、これをテーマとスタイルとして設定します(設定するスタイルtextColor、および他のすべてのものを設定するテーマ):

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    style="@style/EditText.Login"
    android:theme="@style/EditText.Login"/>

編集する

このソリューションは、選択ハンドルに下線が付いている新しいAndroidバージョン(LollipopまたはMarshmallow以降)で小さなUIグリッチを引き起こします。

この問題はこのスレッドで説明されています。(私はこのソリューションを個人的に試したことはありません)


素晴らしい回答ありがとうございます。parent = "android:Widget.EditText"の代わりにparent = "Widget.AppCompat.EditText"を使用すると、私の大きな問題が解決しました。
cfl 2017年

1
これはLollipop(21)以上で機能することを意味していると思います。これは21を下回らないという警告が表示されるためです
Mark O'Sullivan

@ MarkO'Sullivanいいえ、これはロリポップ以前から上まで機能します。API 10でテストしましたが、正常に動作します。完全なエラーとそれが表示される場所を貼り付けてください。
スーフィアン2017年

フォーカスされたエディットテキストにはまだカラーの原色があったため、次のアプローチを使用する必要がありました:stackoverflow.com/a/36543554/2413303
EpicPandaForce

18

あなたは変更することができ下線のEditTextでそれを指定した色のstyles.xmlを。アプリのテーマstyles.xmlに以下を追加します。

<item name="android:textColorSecondary">@color/primary_text_color</item> 

コメント欄でアナが指摘したように

  <item name="android:colorControlActivated">@color/black</item>

これをテーマスタイルで設定すると、edittextの下線の色を変更するのに適しています。


3
は、ActionBarのandroid:textColorSecondary戻る矢印とDrawerLayoutハンバーガーアイコンの色を決定するためにも使用されることに注意してください。
Bianca Daniciuc

7
<item name="colorControlNormal">@color/edittext_underline_color</item>ナビゲーションバーの色の問題のため、textColorSecondaryの代わりに使用しました。
Bianca Daniciuc

14

したがって、ドローアブルフォルダーに新しい.xmlファイルを作成する必要があります。

そのファイルに次のコードを貼り付けます。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item
    android:bottom="8dp"
    android:left="-3dp"
    android:right="-3dp"
    android:top="-3dp">
    <shape android:shape="rectangle">
     <stroke
       android:width="1dp"
       android:color="@color/white"/>
     </shape>
   </item>
</layer-list>

そしてEditTextで、

android:background="@drawable/your_drawable"

ドローアブルxmlで遊んだり、コーナーやパディングを設定したりできます。


1
スタイルまたはレイアウトの他のコンポーネントに影響を与えることなくEditTextを完全にカスタマイズできることを考えると、これはおそらくより良いソリューションです
mutable2112

私が理解していないことから、edittextの背景を白に設定することができます
rmanalo '12 / 07/12

私が見つけたすべてのソリューションを試してみたところ、これが私にとってAndroid Materialコンポーネントを使用する唯一のソリューションでした。
barney.balazs

9

アプリのスタイルで、プロパティcolorAccentを定義します。ここに例があります

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/action_bar</item>
</style>


1

以下のコードを使用して、編集テキストの境界線の背景色を変更します。

ドローアブルの下に新しいXMLファイルを作成します。

abc.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00000000" />
    <stroke android:width="1dip" android:color="#ffffff" />
</shape>

エディットテキストの背景として追加します

android:background="@drawable/abc"

上記で背景色を設定しようとしたと述べました。うまくいきませんでした。
AndroidEnthusiast 2014年

1

ボトムラインの色を変更するには、これをアプリのテーマで使用できます:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#ffe100</item>
    <item name="colorControlHighlight">#ffe100</item>
</style>

フローティングラベルの色を変更するには、次のテーマを記述します。

<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>

レイアウトでこのテーマを使用します。

 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <EditText
        android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:capitalize="characters"
        android:hint="User Name"
        android:imeOptions="actionNext"
        android:inputType="text"
        android:singleLine="true"
        android:textColor="@android:color/white" />

</android.support.design.widget.TextInputLayout>

ここに画像の説明を入力してください


私はこのアプローチを使用していたので、集束エディットテキストは、まだ、私のために色の原色を持っていた:stackoverflow.com/a/36543554/2413303
EpicPandaForce

1

AppCompatEditTextとカラーセレクターでそれを行うことができます:

            <androidx.appcompat.widget.AppCompatEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:backgroundTint="@color/selector_edittext_underline" />

selector_edittext_underline.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/focused_color" 
          android:state_focused="true" />
    <item android:color="@color/hint_color" />
</selector>

0

API <21のデバイスをサポートする必要がない場合は、xmlでbackgroundHintを使用します。次に例を示します。

 <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:hint="Task Name"
            android:ems="10"
            android:id="@+id/task_name"
            android:layout_marginBottom="15dp"
            android:textAlignment="center"
            android:textColor="@android:color/white"

            android:textColorLink="@color/blue"
            android:textColorHint="@color/blue"
            android:backgroundTint="@color/lighter_blue" />

サポートとフォールバックを改善するには、@ Akariuzソリューションを使用します。backgroundHintは最も簡単なソリューションですが、要件に基づいて、下位互換性はありません。


0

colorAccentその色を設定する必要がある色を変更してcolorAccent実行すると、出力が得られます


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.