EditText menggarisbawahi properti teks di bawah


108

Saya ingin mengubah warna biru di bawah teks edit, saya tidak tahu properti apa itu.

Saya mencoba menggunakan warna latar belakang yang berbeda untuk itu tetapi tidak berhasil.

Saya telah melampirkan gambar di bawah ini:

masukkan deskripsi gambar di sini


Ini adalah latar belakang untuk EditText yang tersedia pada tingkat api / telepon tertentu. Dengan kata lain, jika aplikasi Anda berjalan pada ponsel yang berbeda, Anda mungkin melihat latar belakang yang berbeda.
Sherif elKhatib

membuat Anda latar belakang teks editan khusus
Vijju

1
Kemungkinan duplikasi utas sebelumnya. Silakan periksa ini stackoverflow.com/a/4585750/1129468
gokhanakkurt

Gunakan bagian kode di bawah ini dan beri tahu saya apakah itu berfungsi atau tidak.
InnocentKiller

Jawaban:


90

Sebenarnya cukup mudah untuk mengatur warna garis bawah dari EditText secara terprogram (hanya satu baris kode).

Untuk mengatur warna:

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

Untuk menghilangkan warna:

editText.getBackground().clearColorFilter();

Catatan: saat EditText memiliki fokus , warna yang Anda atur tidak akan berpengaruh, melainkan memiliki warna fokus.

Referensi API:

Drawable # setColorFilter

Drawable # clearColorFilter


4
Juga berfungsi pada Xamarin untuk Android, di perender kustom OnElementChanged Anda dapat melakukannyaControl.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
David Conlisk

@DavidConlisk mana Rendereryang Anda timpa? Saya mencoba mencari cara untuk membuat ini berfungsi untuk bilah pencarian.
Nick N.

@Tokopedia Saya menggunakan ini untuk picker, jadi saya mengesampingkan PickerRenderer. Ini harus bekerja dengan penyaji apa pun yang paling cocok untuk Anda (secara teori!)
David Conlisk

1
Saya kira itu harus, tetapi masalahnya mungkin itu SearchBarRendererbukan tipe EditText. Tidak bisa membuatnya bekerja.
Nick N.

85

Gunakan android:backgroundTint=""dalam EditTexttata letak xml Anda .

Untuk api <21 Anda dapat menggunakan AppCompatEditTextdari pustaka dukunganapp:backgroundTint=""


14
Ini hanya berfungsi saat ini di api 21 ke atas. tidak ada dukungan mundur.
John Shelley

2
Sejauh ini, ini adalah solusi paling sederhana dan paling ringkas.
IgorGanapolsky

@JohnShelley lihat jawaban saya di bawah , ini berfungsi untuk pra-Lollipop dan lebih tinggi.
Sufian

3
android:background="@null"untuk perangkat dengan api <21.
Hammad Nasir

4
Agar atribut ini berfungsi pada API di bawah 21, Anda harus menggunakan namespace app (xmlns: app = " schemas.android.com/apk/res-auto" ), bukan android.
Andrei K.

38

Anda harus menggunakan gambar latar belakang yang berbeda, bukan warna, untuk setiap status EditText(fokus, diaktifkan, diaktifkan).

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

Di situs di atas, Anda bisa mendapatkan gambar dari banyak komponen dalam tema Holo. Cukup pilih "EditText" dan warna yang Anda inginkan. Anda dapat melihat pratinjau di bagian bawah halaman.

Unduh file .zip, dan salin tempel sumber daya dalam proyek Anda (gambar dan XML).

jika XML Anda dinamai: apptheme_edit_text_holo_light.xml (atau yang serupa):

  1. Buka XML "styles.xml" Anda dan tambahkan EditTextgaya kustom :

    <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. Lakukan saja ini di EditText:

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

Dan itu saja, saya harap ini membantu Anda.


24

Ini berfungsi dengan baik untuk versi lama dan baru Android (berfungsi dengan baik bahkan pada API 10!).

Tentukan gaya ini di 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>

Dan sekarang di XML Anda, setel ini sebagai tema dan gaya ( gaya untuk disetel textColor, dan tema untuk menyetel semua hal lainnya):

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

Edit

Solusi ini menyebabkan kesalahan UI kecil pada versi Android yang lebih baru (Lollipop atau Marshmallow dan seterusnya) yang gagang pemilihannya digarisbawahi.

Masalah ini dibahas di utas ini . (Saya belum mencoba solusi ini secara pribadi)


Jawaban bagus terima kasih. Menggunakan parent = "Widget.AppCompat.EditText", bukan parent = "android: Widget.EditText" memecahkan masalah utama saya.
cfl

1
Saya pikir maksud Anda ini berfungsi Lollipop (21) dan lebih tinggi karena saya mendapat peringatan bahwa ini tidak lebih rendah dari 21
Mark O'Sullivan

@ MarkO'Sullivan tidak, ini berfungsi untuk pra-Lollipop dan seterusnya. Saya telah mengujinya di API 10, dan berfungsi dengan baik. Harap tempel kesalahan lengkap dan tempat itu ditampilkan.
Sufian

Teks edit terfokus masih memiliki warna warna primer untuk saya, jadi saya harus menggunakan pendekatan ini: stackoverflow.com/a/36543554/2413303
EpicPandaForce

18

Anda dapat mengubah Underline dari EditText warna menentukan dalam styles.xml . Dalam gaya tema aplikasi Anda.xml tambahkan yang berikut ini.

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

Seperti yang ditunjukkan oleh ana di bagian komentar

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

pengaturan ini dalam gaya tema bekerja dengan baik untuk mengubah warna garis bawah teks editan.


3
Catatan yang android:textColorSecondarydigunakan untuk menentukan warna panah kembali dan DrawerLayoutikon hamburger di ActionBar, juga.
Bianca Daniciuc

7
Saya akhirnya menggunakan <item name="colorControlNormal">@color/edittext_underline_color</item>alih-alih textColorSecondary karena masalah pewarnaan bilah navigasi.
Bianca Daniciuc

14

Jadi, Anda perlu membuat file .xml baru di folder drawable Anda.

Di file itu tempel kode ini:

<?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>

Dan di EditText Anda, setel

android:background="@drawable/your_drawable"

Anda dapat bermain dengan xml drawable, sudut setel, paddings, dll.


1
ini mungkin solusi yang lebih baik karena memungkinkan kustomisasi penuh EditText, tanpa memengaruhi komponen lain dalam gaya atau tata letak
mutable2112

dari apa yang saya tidak mengerti, Anda bisa mengatur latar belakang teks editan menjadi putih
rmanalo

Melalui semua solusi yang dapat saya temukan, ini adalah satu-satunya yang berfungsi untuk saya menggunakan komponen Material Android.
barney.balazs

9

Dalam gaya aplikasi Anda, tentukan properti colorAccent . Di sini Anda menemukan contohnya

<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>

5

Anda dapat mengubah warna EditText secara terprogram hanya dengan menggunakan baris kode ini dengan mudah:

edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));


1
Bekerja seperti pesona: D
Taslim Oseni

1

Gunakan kode di bawah ini untuk mengubah warna latar belakang perbatasan edit-teks.

Buat file XML baru di bawah drawable.

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>

dan menambahkannya sebagai latar belakang teks edit Anda

android:background="@drawable/abc"

saya menyebutkan bahwa saya telah mencoba mengatur warna latar belakang di atas. itu tidak berhasil.
AndroidEnthusiast

1

Untuk mengubah warna garis bawah, Anda dapat menggunakan ini di tema aplikasi Anda:

<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>

Untuk mengubah warna label mengambang, tulis tema berikut:

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

dan gunakan tema ini dalam tata letak Anda:

 <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>

masukkan deskripsi gambar di sini


Teks edit terfokus masih memiliki warna primer warna untuk saya, jadi saya harus menggunakan pendekatan ini: stackoverflow.com/a/36543554/2413303
EpicPandaForce

1

Anda dapat melakukannya dengan AppCompatEditText dan pemilih warna:

            <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

Jika Anda tidak harus mendukung perangkat dengan API <21, gunakan backgroundHint di xml, misalnya:

 <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" />

Untuk dukungan dan fallback yang lebih baik, gunakan solusi @Akariuz. backgroundHint adalah solusi yang paling mudah, tetapi tidak kompatibel dengan versi sebelumnya, berdasarkan kebutuhan Anda untuk menelepon.


0

ubah colorAccentwarna yang Anda butuhkan untuk mengatur warna itu colorAccentdan jalankan Anda mendapatkan hasilnya


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.