Yanıtlar:
@ Jérôme Van Der Linden sayesinde tüm görünümler için kullanabileceğiniz en iyi araçtır .
Android Holo Renk Üreticisi, EditText
Android uygulamanız için kendi renklerinizle kolayca veya dönen gibi Android bileşenleri oluşturmanıza olanak tanır . Gerekli tüm dokuz yama varlığının yanı sıra doğrudan projenize kopyalayabileceğiniz ilişkili XML çekilebilir ve stilleri oluşturur.
GÜNCELLEME 1
Bu alanın süresi dolmuş gibi görünüyor, ancak proje burada bulabileceğiniz açık bir kaynak
dene
bu görüntü arka plana koymak EditText
android:background="@drawable/textfield_activated"
GÜNCELLEME 2
API 21 veya üstü için şunu kullanabilirsiniz: 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" />
Güncelleme 3
Şimdi Sırt Desteği VarAppCompatEditText
Not: Biz kullanılması gereken app: backgroundTint yerine 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" />
Önceki cevapları sevmiyorum. En iyi çözüm kullanmaktır:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
için EditText
sadece eserlerin API21 + . Bu nedenle, destek kitaplığını ve AppCompatEditText
.
Not: app:backgroundTint
yerine kullanmak zorundayızandroid:backgroundTint
AndroidX sürümü
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Ayrıca EditText'in arka planını aşağıdaki gibi renklendirerek EditText'in alt çizgi rengini hızlı bir şekilde değiştirebilirsiniz:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
21'in altındaki API için , EditText
aşağıdaki kodu stil dosyasına yerleştirerek theme özelliğini kullanabilirsiniz
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
Bu stili kullanan EditText
olarak
<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" />
Programlı olarak deneyebilirsiniz:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
en iyi yol tema olduğunu düşünüyorum:
<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"/>
Edittext'in alt çizgi rengini değiştirmek için:
Tüm uygulamanın bu stili paylaşmasını istiyorsanız, aşağıdaki şekilde yapabilirsiniz.
(1) styles.xml dosyasına gidin. Theme.AppCompat.Light.DarkActionBar öğesinin üst öğesini devralan AppTheme uygulamanız (benim durumumda), uygulamanızdaki tüm stil dosyalarının temel üst öğesi olacaktır. Adını “AppBaseTheme” olarak değiştirin. Hemen altında AppTheme adını taşıyan ve az önce düzenlediğiniz AppBaseTheme öğesinden miras kalan başka bir stil yapın. Aşağıdaki gibi görünecektir:
<!-- 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>
Ardından, “colorAccent” i EditText çizgi renginizin olmasını istediğiniz renge değiştirin.
(2) style.xml içeren başka değer klasörleriniz varsa, bu adım çok önemlidir. Çünkü bu dosya önceki üst xml dosyanızdan devralacak. Örneğin, değerler-19 / styles.xml var. Bu özellikle Kitkat ve üstü içindir. Üst öğesini AppBaseTheme olarak değiştirin ve üst öğenin rengini geçersiz kılmaması için “colorAccent” öğesinden kurtulduğunuzdan emin olun. Ayrıca 19 sürümüne özgü öğeleri tutmanız gerekir. Sonra böyle görünecektir.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
Oldukça basit (Gerekli: Minimum API 21) ...
Kod Yazmaya Devam Edin ........ :)
Çizginin rengi, EditText
arka plan özelliği tarafından tanımlanır . Bunu değiştirmek android:background
için mizanpaj dosyasında değiştirmelisiniz.
Bu tarzın 9 yamalı bir çekilebilir kullanarak elde edildiğine dikkat etmeliyim. SDK'ya bakarsanız, arka planının EditText
bu resim olduğunu görebilirsiniz:
Bunu değiştirmek için bir görüntü işleme programında açabilir ve istediğiniz renkte renklendirebilirsiniz. Olarak kaydedin bg_edit_text.9.png
ve sonra çizilebilir klasöre koyun. Şimdi beğeninize arka plan olarak uygulayabilirsiniz EditText
:
android:background="@drawable/bg_edit_text"
EditText'in rengini sadece bu kod satırını kullanarak programlı olarak değiştirebilirsiniz:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Widget'ların arka planı API düzeyine bağlıdır .
ALTERNATİF 1
EditText
Tarafından arka planınıza özel bir resim sağlayabilirsiniz
android:background="@drawable/custom_editText"
Resminiz böyle görünmelidir. Size istenen efekti verecektir.
ALTERNATİF 2
Bu xml'yi EditText
arka plan özelliğinize ayarlayın .
<?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>
Bu EditText
, her API'da aynı görünüme sahip olacak .
Arka planı renklendirerek rengi değiştirebilirsiniz
<EditText
android:backgroundTint="@color/red"/>
çekilebilir / 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 olarak ayarla
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Bu yöntemi kullanın .. ve ur görünüm adlarına göre değiştirin. Bu kod harika çalışıyor.
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());
}
Düz bir çizgi istiyorsanız, bunu xml ile kolayca yapabilirsiniz. İşte xml örneği:
<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>
Odaklanmış düzenleme metni için farklı genişlik ve renk sağlamak istiyorsanız şekli bir seçiciyle değiştirin.
En iyi yaklaşım bir kullanmaktır AppCompatEditText
ile backgroundTint
oznıtelığı app
ad. yani
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
kullandığımızda android:backgroundTint
yalnızca API21 veya daha fazlasında app:backgroundTint
çalışır, ancak uygulamanızın yaptığı tüm API düzeylerinde çalışır.
<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" />
** manzara ile yapmak **
Aşağıdaki yolu deneyin, arka plan özelliği olarak kullanıldığında EditText öğesinin alt satır rengini dönüştürür.
<?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>