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:
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:
Jawaban:
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:
Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
Renderer
yang Anda timpa? Saya mencoba mencari cara untuk membuat ini berfungsi untuk bilah pencarian.
SearchBarRenderer
bukan tipe EditText
. Tidak bisa membuatnya bekerja.
Gunakan android:backgroundTint=""
dalam EditText
tata letak xml Anda .
Untuk api <21 Anda dapat menggunakan AppCompatEditText
dari pustaka dukunganapp:backgroundTint=""
android:background="@null"
untuk perangkat dengan api <21.
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):
Buka XML "styles.xml" Anda dan tambahkan EditText
gaya 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>
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.
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"/>
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)
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.
android:textColorSecondary
digunakan untuk menentukan warna panah kembali dan DrawerLayout
ikon hamburger di ActionBar, juga.
<item name="colorControlNormal">@color/edittext_underline_color</item>
alih-alih textColorSecondary karena masalah pewarnaan bilah navigasi.
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.
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>
Anda dapat mengubah warna EditText secara terprogram hanya dengan menggunakan baris kode ini dengan mudah:
edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
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"
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>
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>
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.
Cukup ubah android: backgroundTint dalam kode xml ke warna Anda