Jawaban:
Ini adalah alat terbaik yang dapat Anda gunakan untuk semua tampilan dan banyak terima kasih GRATIS untuk @ Jérôme Van Der Linden .
Android Holo Colours Generator memungkinkan Anda untuk dengan mudah membuat komponen Android seperti EditText
atau pemintal dengan warna Anda sendiri untuk aplikasi Android Anda. Ini akan menghasilkan semua sembilan aset tambalan yang diperlukan ditambah drawable dan style XML terkait yang dapat Anda salin langsung ke proyek Anda.
PEMBARUAN 1
Domain ini tampaknya kedaluwarsa tetapi proyek ini merupakan sumber terbuka yang dapat Anda temukan di sini
Cobalah
gambar ini diletakkan di latar belakang EditText
android:background="@drawable/textfield_activated"
PEMBARUAN 2
Untuk API 21 atau lebih tinggi, Anda dapat menggunakan 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" />
Perbarui 3
Sekarang Kami memiliki dukungan punggungAppCompatEditText
Catatan: Kita perlu menggunakan aplikasi: backgroundTint bukan Android: 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" />
Saya tidak suka jawaban sebelumnya. Solusi terbaik adalah menggunakan:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
untuk EditText
bekerja hanya di API21 + . Karena itu, kita harus menggunakan perpustakaan dukungan dan AppCompatEditText
.
Catatan: kita harus menggunakan app:backgroundTint
alih-alihandroid:backgroundTint
Versi AndroidX
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Anda juga dapat dengan cepat mengubah warna garis bawah EditText dengan mewarnai latar belakang EditText seperti:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
untuk API di bawah 21, Anda dapat menggunakan atribut tema dengan EditText
memasukkan kode di bawah ini ke dalam file gaya
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
gunakan gaya ini EditText
sebagai
<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" />
Secara pemrograman, Anda dapat mencoba:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
saya pikir cara terbaik adalah dengan tema:
<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"/>
Untuk mengubah warna garis bawah Edittext:
Jika Anda ingin seluruh aplikasi membagikan gaya ini, maka Anda dapat melakukan hal berikut.
(1) buka file styles.xml. AppTheme Anda yang mewarisi induk dari Theme.AppCompat.Light.DarkActionBar (dalam kasus saya) akan menjadi induk dari semua file gaya mereka di aplikasi Anda. Ubah namanya menjadi "AppBaseTheme '. Buat gaya lain tepat di bawahnya yang memiliki nama AppTheme dan mewarisi dari AppBaseTheme yang baru saja Anda edit. Ini akan terlihat seperti berikut:
<!-- 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>
Kemudian ubah "colorAccent" ke warna apa pun yang Anda inginkan menjadi warna garis EditText Anda.
(2) Jika Anda memiliki folder nilai lain dengan style.xml, langkah ini sangat penting. Karena file itu akan mewarisi dari file xml induk Anda sebelumnya. Sebagai contoh, saya memiliki nilai-19 / styles.xml. Ini khusus untuk Kitkat dan di atas. Ubah induknya ke AppBaseTheme dan pastikan untuk menyingkirkan "colorAccent" sehingga tidak menimpa warna induknya. Anda juga perlu menyimpan item yang khusus untuk versi 19. Maka akan terlihat seperti ini.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
Ini cukup sederhana (Diperlukan: Minimum API 21) ...
Keep Coding ........ :)
Warna garis ditentukan oleh EditText
properti latar belakang. Untuk mengubahnya, Anda harus mengubah android:background
file tata letak.
Saya harus mencatat bahwa gaya ini dicapai dengan menggunakan drawable 9-patch. Jika Anda melihat di SDK, Anda dapat melihat bahwa latar belakang EditText
gambar ini:
Untuk mengubahnya, Anda bisa membukanya dalam program manipulasi gambar dan mewarnainya dengan warna yang diinginkan. Simpan sebagai bg_edit_text.9.png
dan kemudian taruh di folder yang dapat digambar. Sekarang Anda dapat menerapkannya sebagai latar belakang untuk yang Anda EditText
sukai:
android:background="@drawable/bg_edit_text"
Anda dapat mengubah warna EditText secara terprogram hanya dengan menggunakan baris kode ini:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Latar belakang widget bergantung pada level API .
ALTERNATIF 1
Anda dapat memberikan gambar khusus ke EditText
latar belakang Anda dengan
android:background="@drawable/custom_editText"
Gambar Anda akan terlihat seperti ini. Ini akan memberi Anda efek yang diinginkan.
ALTERNATIF 2
Setel xml ini ke EditText
atribut latar belakang Anda .
<?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>
Ini akan memiliki tampilan dan nuansa yang sama dengan Anda EditText
di setiap API.
Anda dapat mengubah warna dengan mewarnai latar belakang
<EditText
android:backgroundTint="@color/red"/>
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>
Setel ke EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Gunakan metode ini .. dan modifikasi sesuai dengan nama tampilan Anda. Kode ini sangat bagus.
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());
}
Jika Anda menginginkan garis datar, Anda dapat melakukannya dengan mudah dengan xml. Berikut ini adalah contoh 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>
Ganti bentuk dengan pemilih jika Anda ingin memberikan lebar dan warna yang berbeda untuk edittext fokus.
Pendekatan terbaik adalah dengan menggunakan AppCompatEditText
dengan backgroundTint
atribut app
namespace. yaitu
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
ketika kami menggunakannya android:backgroundTint
hanya akan berfungsi di API21 atau lebih tetapi app:backgroundTint
berfungsi di semua level API aplikasi Anda.
<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" />
** itu salah lakukan dengan tampilan **
Coba cara berikut, ini akan mengonversi warna garis bawah EditText, ketika digunakan sebagai properti latar belakang.
<?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>