EditTextで線の色を変更する方法


203

レイアウトxmlファイルにEditTextを作成しています

しかし、EditTextのカラーラインをHoloから(たとえば)赤に変更したいと思います。それはどのように行うことができますか?

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

回答:


310

これはすべてのビューに使用できる最高のツールであり、@ JérômeVan Der Lindenのおかげで多くの無料のツールを利用できます。

Android Holo Colors Generatorを使用するとEditText、Androidアプリケーション用の独自の色を使用して、またはスピナーなどのAndroidコンポーネントを簡単に作成できます。プロジェクトに直接コピーできる必要な9つのパッチアセットと関連するXMLドローアブルとスタイルをすべて生成します。

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

アップデート1

このドメインは有効期限が切れているようですが、プロジェクトはここで見つけることができるオープンソースです

https://github.com/jeromevdl/android-holo-colors

それを試してみてください

この画像の背景に EditText

android:background="@drawable/textfield_activated"

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


アップデート2

API 21以降の場合は、 android:backgroundTint

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Underline color change"
        android:backgroundTint="@android:color/holo_red_light" />

Update 3 NowバックサポートありAppCompatEditText

注:android:backgroundTintの代わりにapp:backgroundTintを使用する必要があります

<android.support.v7.widget.AppCompatEditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:hint="Underline color change"
    app:backgroundTint="@color/blue_gray_light" />

リンクが死んでいるようです?ソフトウェアはまだ利用できますか?
コーディングJohn

1
@CodingJohnこのプロジェクトはオープンソースであり、github.com
jeromevdl /

「android:backgroundTint」の代わりに「app:backgroundTint」を使用する必要があると誰が言うのですか?
user924

あなたがしたい場合は、下位互換性を、あなたは、アプリを使用することができます:*** OWは、Android:***
MilapTank

202

以前の答えは好きではありません。最善の解決策は以下を使用することです:

<android.support.v7.widget.AppCompatEditText

      app:backgroundTint="@color/blue_gray_light" />

android:backgroundTint以下のためのEditText唯一の作品API21 +。そのため、サポートライブラリとを使用する必要がありAppCompatEditTextます。

注:のapp:backgroundTint代わりに使用する必要がありますandroid:backgroundTint

AndroidXバージョン

<androidx.appcompat.widget.AppCompatEditText

      app:backgroundTint="@color/blue_gray_light" />

3
これが最善の解決策です!シンプルで、すべてのAPIレベルで機能します。ありがとう!
Ivo Stoyanov 2017年

7
appcompatライブラリーを使用する場合、EdtiTextは自動的にAppCompatEditTextに変換され、背景の色合いが適用されます。
ステファンk。

これはまさに解決策だと思います
Thuy Nguyen

どうもありがとうございました。API 16以上で動作しました。最適なソリューション。
アンドレ・ルイス・レイス

2
プログラムでapp:backgroundTintを設定できますか?「setBackgroundTint」メソッドを見つけることができました
Sarath Nagesh

75

次のようにEditTextの背景に色を付けることにより、EditTextの下線の色をすばやく変更することもできます。

<EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Something or Other"
            android:backgroundTint="@android:color/holo_green_light" />

18
API 21以降でのみ機能します。これをより低いAPIレベルで機能させる方法はありますか?
Vucko

reVerseソリューションを確認しますstackoverflow.com/questions/26574328/…–
powder366

@ mladj0niクール、+ 1d
Vucko 2017年

3
APIレベルが低い場合は、「android:backgroundTint」の代わりに「backgroundTint」のみを使用します。クレジットstackoverflow.com/a/29400711/1590911
Hasaan Ali

これは、線の色ではなく背景色全体を変更します
コードウィジェット

29

以下のためのAPI 21以下、あなたはでテーマ属性を使用することができますEditText スタイルファイルにコードの下に置きます

<style name="MyEditTextTheme">
    <item name="colorControlNormal">#FFFFFF</item>
    <item name="colorControlActivated">#FFFFFF</item>
    <item name="colorControlHighlight">#FFFFFF</item>
</style>

このスタイルEditText

<EditText
    android:id="@+id/etPassword"
    android:layout_width="match_parent"
    android:layout_height="@dimen/user_input_field_height"
    android:layout_marginTop="40dp"
    android:hint="@string/password_hint"
    android:theme="@style/MyEditTextTheme"
    android:singleLine="true" />

スタイルファイルにアルファ/不透明度を追加する方法を知っていますか?不透明度のある通常の色を使用し、入力を開始すると、アクティブ化または強調表示された色を使用するように
ASN

1
@ANSを使用するには、テキストウォッチャーリスナーを追加し、「onTextChanged」メソッドで不透明度を動的に設定する必要があります
Rahul

ああ。だからそれはスタイリングまたはセレクターファイルに追加することができず、動的に行う必要がありますか?
ASN

@ASNの不透明度は16進数で追加され、最初の2文字は00-FFです。たとえば、#A1FAFAFA
aimiliano

21

プログラム的に、次のことを試すことができます。

editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);

2
Xamarin.Forms効果のベストアンサー
mister_giga

11

私は最良の方法はテーマによると思います:

<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorControlNormal">@color/black</item>
        <item name="colorControlActivated">@color/action_blue</item>
        <item name="colorControlHighlight">@color/action_blue</item>
</style>

<style name="AddressBookStyle" parent="Theme.AppCompat.Light.DarkActionBar">
     <item name="android:layout_width">match_parent</item>
     <item name="android:layout_height">wrap_content</item>
     <item name="android:textSize">13sp</item>
     <item name="android:theme">@style/MyEditTextTheme</item>
</style>

<android.support.v7.widget.AppCompatEditText
            style="@style/AddressBookStyle"/>

2
これはスタイルタグでは機能しませんが、android:themeタグでは機能しません
aimiliano

9

Edittextの下線の色を変更するには:

アプリ全体でこのスタイルを共有する場合は、次の方法を使用できます。

(1)styles.xmlファイルに移動します。Theme.AppCompat.Light.DarkActionBar(私の場合)の親を継承するAppThemeは、アプリ内のすべてのスタイルファイルの基本親になります。名前を「AppBaseTheme」に変更します。そのすぐ下に、AppThemeという名前で編集したAppBaseThemeを継承する別のスタイルを作成します。次のようになります。

<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="windowActionBar">false</item>
    <!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
    <item name="colorPrimary">@color/material_brown_500</item>
    <item name="colorPrimaryDark">@color/material_brown_700</item>
    <item name="colorAccent">@color/flamingo</item>

<style name="AppTheme" parent="AppBaseTheme">
    <!-- Customize your theme here. -->
</style>

次に、「colorAccent」をEditTextの線の色にしたい色に変更します。

(2)style.xmlを含む他の値フォルダーがある場合、この手順は非常に重要です。そのファイルは以前の親xmlファイルを継承するためです。たとえば、values-19 / styles.xmlがあります。これは、特にキットカット以上のものです。親をAppBaseThemeに変更し、「colorAccent」を削除して、親の色を上書きしないようにします。また、バージョン19に固有のアイテムを保持する必要があります。その後、次のようになります。

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:windowTranslucentStatus">true</item>
    </style>
</resources>

9

かなりシンプル(必須:最小API 21)...

  1. xmlに移動し、EditTextフィールドを選択します
  2. 右側に、「属性」ウィンドウが表示されます。「すべての属性を表示」を選択します
  3. 「色合い」を検索してください
  4. そして、「backgroundTint」を希望の色のヘックスに追加/変更します(例:#FF0000)

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

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

コーディングを続ける........ :)


2
最小API 21
Maihan Nijat

背景の色合いを変更すると、背景が変更されます。この答えは正しくありません
コードウィジェット

6

線の色はEditTextのbackgroundプロパティによって定義されます。これを変更するにandroid:backgroundは、レイアウトファイルでを変更する必要があります。

このスタイルは9パッチのドローアブルを使用して実現されていることに注意してください。SDKを見ると、背景EditTextが次の画像であることがわかります。

textfield_activated_holo_light.9.png

これを変更するには、画像操作プログラムで開き、目的の色に着色します。bg_edit_text.9.png名前を付けて保存し、ドローアブルフォルダーに配置します。これで、次のEditTextように背景として適用できます。

android:background="@drawable/bg_edit_text"


4

ウィジェットの背景は、APIレベルに依存しています。

代替1

あなたはあなたのEditText背景にカスタム画像を提供することができます

android:background="@drawable/custom_editText"

画像は次のようになります。それはあなたに望ましい効果を与えます。

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

代替2

このxmlをEditTextバックグラウンド属性に設定します。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle" android:padding="10dp">
<solid android:color="#4C000000"/>
    <corners android:bottomRightRadius="5dp"
             android:bottomLeftRadius="5dp"
             android:topLeftRadius="5dp"
             android:topRightRadius="5dp"/>
</shape>

これはEditText、すべてのAPI で同じルックアンドフィールになります。


バージョン4.0以上に興味があります。つまり、EditTextがアクティブなときに線の色を変更したいだけです
Alex

4

背景に色を付けて色を変えることができます <EditText android:backgroundTint="@color/red"/>


1
これはapi> 21でのみ機能し、すべてのapiに対して@Rahulの回答に従うか、api> 21の異なるレイアウトをlayout-21フォルダーに追加する必要があります
aimiliano

4

drawable / bg_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>

    <item
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dp"
                android:color="@color/colorDivider" />
        </shape>
    </item>
</layer-list>

EditTextに設定

<android.support.v7.widget.AppCompatEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_edittext"/>

3

このメソッドを使用します。ビューの名前に従って変更します。このコードはうまくいきます。

 private boolean validateMobilenumber() {
            if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
                input_layout_mobilenumber.setErrorEnabled(true);
                input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
               // requestFocus(mobilenumber);
                return false;
            } else {
                input_layout_mobilenumber.setError(null);
                input_layout_mobilenumber.setErrorEnabled(false);
                mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
            }

2

フラットラインが必要な場合は、xmlを使用して簡単に設定できます。以下にxmlの例を示します。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="-1dp"
        android:left="-1dp"
        android:right="-1dp"
        android:bottom="1dp"
        >
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#6A9A3A"/>
        </shape>
    </item>
</layer-list>

フォーカスされた編集テキストに異なる幅と色を提供する場合は、形状をセレクターに置き換えます。


1
マテリアルデザインにより、幅の広い長方形を作成します
Filip Zymek

2

最良のアプローチは、名前空間のAppCompatEditTextwith backgroundTint属性を使用することですapp。すなわち

    <android.support.v7.widget.AppCompatEditText
    android:layout_width="match_parent"      
    app:backgroundTint="YOUR COLOR"
    android:layout_height="wrap_content" />

私たちが使用android:backgroundTintする場合、API21以上でのみ機能しapp:backgroundTintますが、アプリが行うすべてのAPIレベルで機能します。


1

そのedittextにはandroid:backgroundプロパティを使用します。ドローアブルフォルダーの画像を渡します。例えば、

android:background="@drawable/abc.png"

1
 <EditText
        android:id="@+id/et_password_tlay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        android:textColorHint="#9e9e9e"
        android:backgroundTint="#000"
        android:singleLine="true"
        android:drawableTint="#FF4081"
        android:paddingTop="25dp"
        android:textColor="#000"
        android:paddingBottom="5dp"
        android:inputType="textPassword"/>

    <View
        android:id="@+id/UnderLine"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_below="@+id/et_password_tlay"
        android:layout_centerHorizontal="true"
        android:background="#03f94e" />

**それはビューで行うことの1つです**


1

次の方法を試してください。背景プロパティとして使用すると、EditTextの一番下の線の色が変換されます。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="@dimen/spacing_neg"
        android:right="@dimen/spacing_neg"
        android:top="@dimen/spacing_neg">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="@dimen/spacing_1"
                android:color="@android:color/black" />
        </shape>
    </item>
</layer-list>

0

これはandroid:theme="@style/AppTheme.AppBarOverlay、これ<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />をeditTextの属性として含め、スタイルに追加することで簡単に実行できます。

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