Korzystam z niedawno wydanej biblioteki obsługi projektów systemu Android, aby wyświetlić pływającą etykietę z EditTexts. Ale mam do czynienia z problemem polegającym na tym, że wskazówka dotycząca tekstu edycji nie jest wyświetlana, gdy renderowany jest interfejs użytkownika, ale widzę wskazówkę po tym, jak skupię się na tekstach edycji.
Mój układ wygląda następująco:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<android.support.design.widget.TextInputLayout
android:id="@+id/name_et_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin">
<EditText
android:id="@+id/FeedBackerNameET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackname"
android:inputType="textPersonName|textCapWords" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/email_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/FeedBackerEmailET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackemail"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<Spinner
android:id="@+id/SpinnerFeedbackType"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:entries="@array/feedbacktypelist"
android:prompt="@string/feedbacktype" />
<android.support.design.widget.TextInputLayout
android:id="@+id/body_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/EditTextFeedbackBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackbody"
android:inputType="textMultiLine|textCapSentences"
android:lines="5" />
</android.support.design.widget.TextInputLayout>
<CheckBox
android:id="@+id/CheckBoxFeedBackResponse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackresponse" />
<Button
android:id="@+id/ButtonSendFeedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackbutton" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/toolbar_shadow" />
</FrameLayout>
Próbowałem również ustawić wskazówkę dotyczącą TextInputLayout
metody używania, setHint
ale bez powodzenia.
mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout);
mNameTextInputLayout.setErrorEnabled(true);
mNameTextInputLayout.setHint(feedBackerNameET.getHint());
mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout);
mEmailTextInputLayout.setErrorEnabled(true);
mEmailTextInputLayout.setHint(feedBackerEmail.getHint());
mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout);
mBodyTextInputLayout.setErrorEnabled(true);
mBodyTextInputLayout.setHint(feedBackBody.getHint());
android
material-design
android-design-library
Shajeel Afzal
źródło
źródło
Odpowiedzi:
Aktualizacja:
Jest to błąd, który został naprawiony w wersji 22.2.1 biblioteki.
Oryginalna odpowiedź:
Jak wspomniał @shkschneider, jest to znany błąd . Użytkownik Github @ ljubisa987 opublikował niedawno streszczenie opisujące obejście:
https://gist.github.com/ljubisa987/e33cd5597da07172c55d
Jak zauważono w komentarzach, obejście działa tylko na Androidzie Lollipop i starszych. Nie działa na podglądzie Androida M.
źródło
To znany błąd biblioteki Android Design. Został przyjęty i przydzielony .
Więc powinieneś to naprawić w następnej wersji biblioteki Android Design.
W międzyczasie możesz obejrzeć narzędzie do śledzenia problemów w poszukiwaniu hacky-poprawki, która może zostać tam opublikowana, ale na razie nic nie znam.
I tak, dotyczy to tylko Lollipopa i nowszych wersji.
źródło
To działa dla mnie w Bibliotece projektu 23.1.1:
Ustaw kolor podpowiedzi w atrybutach xml TextInputLayout:
źródło
Ten problem został rozwiązany w wersji 22.2.1
źródło
powinieneś używać
android.support.v7.widget.AppCompatEditText
jakoEditText
i ustawićandroid:hint
jak poniżejźródło
Użyj tego fragmentu kodu i upewnij się, że Twoja aktywność to AppCompatActivity. Zależności dotyczą również najnowszych wersji
Zaktualizuj Android Studio do najnowszej wersji. zobacz dane wyjściowe tutaj
źródło
Jeśli ustawiasz wskazówkę EditText programowo, to nie zadziała! Musisz ustawić wskazówkę w TextInputLayout.
Oto XML na wypadek, gdybyś się zastanawiał:
źródło
Ten problem został rozwiązany w
v23.0.1
bibliotece projektów wsparcia. Zaktualizowałem również moje opcjeappcompat-v7
do23.0.1
,compileSdkVersion
do23
ibuildToolsVersion
do23.0.1
w pliku build.gradle .źródło
Rozwiązałem swój problem z tym kodem:
Kluczem jest tutaj
bringToFront
. Zmusza toTextInputLayout
do ponownego wykonania rysunku, co nie jest tym samym, co robienieinvalidate()
. Jeśli próbujesz wyświetlić elementTextInputLayout
na,view
który maanimations
lubtranistions
, musisz wykonać powyższy kod na końcuanimation
lubtransition
. Upewnij się tylko, że powyższy kod działa w interfejsie użytkownikathread
.źródło
Wygląda na to, że ten problem pojawia się po ustawieniu onFousListener w EditText - spróbuj rozszerzyć EditText i obsługiwać wiele onFocusListeners
źródło
Ustaw kolor podpowiedzi kontrastujący z tłem EditText.
<item name="android:textColorHint">#FF424242</item>
Powiązane:
setHintTextColor () w EditText
Zmień kolor wskazówki EditText podczas używania TextInputLayout
Jak zmienić zmienny kolor etykiety TextInputLayout
źródło
Rozwiązany problem: przejdź do build.gradle swojej aplikacji i sprawdź bibliotekę projektów. compile „com.android.support:design:22.2.1” Powinien być 22.2.1 lub nowszy.
źródło
Problemem jest kolor podpowiedzi. Podczas pisania staje się biały. Zmień kolor podpowiedzi lub zmień kolor tła. Podczas pisania zobaczysz podpowiedź.
źródło
Jest na to proste rozwiązanie, ponieważ to zadziałało
Po prostu dodaj android: theme = "@ style / Base.TextAppearance.AppCompat" do TextEditLayout i powinno działać i możesz zmienić motyw według potrzeb.
źródło
Wystarczy dodać:
android:hint="your_hint"
dlaTextInputLayout
.źródło
Znalazłem coś innego.
Ustalając styl dla
fragment
,Błąd zniknął, gdy wypróbowałem inne style niż
"Theme_DeviceDefault_Dialog"
.Spróbuj.
źródło