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

AndroidEnthusiast
sumber
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
android-holo-colors.com
Pratik Butani

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

Jing Li
sumber
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=""

Soheil Setayeshi
sumber
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.

Akariuz
sumber
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)

Sufian
sumber
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.

Dharani Kumar
sumber
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.

Vulovic Vukasin
sumber
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>
Roberto
sumber
5

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

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

Matin Ashtiani
sumber
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"
InnocentKiller
sumber
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

SAndroidD
sumber
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>
Gogi Bobina
sumber
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.

MoMo
sumber
0

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

MD Khali
sumber
0

Cukup ubah android: backgroundTint dalam kode xml ke warna Anda

Marcus Runge
sumber