Chciałbym zmienić niebieski kolor pod tekstem edycji, nie wiem, jaka to właściwość.
Próbowałem użyć innego koloru tła, ale to nie zadziałało.
Załączam obrazek poniżej:
Chciałbym zmienić niebieski kolor pod tekstem edycji, nie wiem, jaka to właściwość.
Próbowałem użyć innego koloru tła, ale to nie zadziałało.
Załączam obrazek poniżej:
Odpowiedzi:
W rzeczywistości dość łatwo jest programowo ustawić kolor podkreślenia tekstu EditText (tylko jeden wiersz kodu).
Aby ustawić kolor:
editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
Aby usunąć kolor:
editText.getBackground().clearColorFilter();
Uwaga: kiedy EditText ma fokus , ustawiony kolor nie będzie obowiązywał, zamiast tego będzie miał kolor ostrości.
Dokumentacja API:
Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
Renderer
? Próbuję wymyślić, jak to działa dla paska wyszukiwania.
SearchBarRenderer
nie jest to typ EditText
. Nie mogę tego zmusić do pracy.
Użyj android:backgroundTint=""
w swoim EditText
układzie XML.
Dla api <21 możesz wtedy użyć AppCompatEditText
biblioteki wsparciaapp:backgroundTint=""
android:background="@null"
dla urządzeń z api <21.
Musisz użyć innego obrazu tła, a nie koloru, dla każdego stanu EditText
(fokus, włączony, aktywowany).
http://android-holo-colors.com/
W powyższej witrynie możesz pobrać obrazy z wielu komponentów w motywie Holo. Po prostu wybierz „EditText” i żądany kolor. Możesz zobaczyć podgląd u dołu strony.
Pobierz plik .zip i skopiuj i wklej zasoby do projektu (obrazy i XML).
jeśli twój XML ma nazwę: apptheme_edit_text_holo_light.xml (lub coś podobnego):
Przejdź do pliku XML „styles.xml” i dodaj EditText
styl niestandardowy :
<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>
Po prostu zrób to w swoim EditText
:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/EditTextCustomHolo"/>
I to wszystko, mam nadzieję, że ci pomoże.
Działa to dobrze dla starej i nowej wersji Androida (działa dobrze nawet z API 10!).
Zdefiniuj ten styl w 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>
A teraz w swoim XML ustaw to jako motyw i styl ( styl do ustawienia textColor
i motyw, aby ustawić wszystkie inne rzeczy):
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
style="@style/EditText.Login"
android:theme="@style/EditText.Login"/>
To rozwiązanie powoduje niewielką usterkę interfejsu użytkownika w nowszych wersjach Androida (Lollipop lub Marshmallow i nowszych), w której uchwyty wyboru są podkreślone.
Ta kwestia jest omawiana w tym wątku . (Nie próbowałem osobiście tego rozwiązania)
można zmienić Podkreślenie z EditText kolorze podając je w styles.xml . W motywie aplikacji styles.xml dodaj następujące elementy.
<item name="android:textColorSecondary">@color/primary_text_color</item>
Jak wskazała ana w sekcji komentarzy
<item name="android:colorControlActivated">@color/black</item>
ustawienie tego w stylu motywu działa dobrze w przypadku zmiany koloru podkreślenia edittext.
android:textColorSecondary
jest używany do określenia koloru strzałki wstecz i DrawerLayout
ikony hamburgera na pasku akcji.
<item name="colorControlNormal">@color/edittext_underline_color</item>
zamiast textColorSecondary z powodu problemu z kolorowaniem paska nawigacji.
Musisz więc utworzyć nowy plik .xml w swoim folderze do rysowania.
W tym pliku wklej ten kod:
<?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>
A w swoim EditText ustaw
android:background="@drawable/your_drawable"
Możesz grać z rysowanym XML, ustawiać rogi, wyściółki itp.
W stylu aplikacji zdefiniuj właściwość colorAccent . Tutaj znajdziesz przykład
<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>
Możesz programowo zmienić kolor EditText, używając tej linii kodu w prosty sposób:
edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Użyj poniższego kodu, aby zmienić kolor tła obramowania tekstu edycji.
Utwórz nowy plik XML pod rysunkiem.
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>
i dodaj go jako tło edytowanego tekstu
android:background="@drawable/abc"
Aby zmienić kolor dolnej linii, możesz użyć tego w motywie aplikacji:
<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>
Aby zmienić kolor pływającej etykiety, napisz następujący motyw:
<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>
i użyj tego motywu w swoim układzie:
<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>
Możesz to zrobić za pomocą AppCompatEditText i selektora kolorów:
<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>
Jeśli nie musisz obsługiwać urządzeń z API <21, użyj backgroundHint w formacie xml, na przykład:
<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" />
Aby uzyskać lepsze wsparcie i rezerwy, użyj rozwiązania @Akariuz. backgroundHint jest najbardziej bezbolesnym rozwiązaniem, ale nie jest kompatybilne wstecz, w zależności od twoich wymagań.
Po prostu zmień android: backgroundTint w kodzie xml na swój kolor