Я использую недавно выпущенную библиотеку поддержки дизайна Android, чтобы отображать плавающие метки с EditTexts. Но я столкнулся с проблемой, что подсказка в EditText не отображается при рендеринге пользовательского интерфейса, но я вижу подсказку после того, как сосредоточусь на EditTexts.
Мой макет выглядит следующим образом:
<?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>
Я также попытался установить подсказку для TextInputLayout
метода использования, setHint
но безуспешно .
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
Шажил Афзал
источник
источник
Ответы:
Обновить:
Это ошибка, исправленная в версии 22.2.1 библиотеки.
Оригинальный ответ:
Как упоминал @shkschneider, это известная ошибка . Пользователь Github @ ljubisa987 недавно опубликовал Gist для обходного пути:
https://gist.github.com/ljubisa987/e33cd5597da07172c55d
Как отмечено в комментариях, обходной путь работает только на Android Lollipop и старше. Это не работает на Android M Preview.
источник
Это известная ошибка библиотеки Android Design. Он был принят и назначен .
Так что вы должны исправить это в следующем выпуске библиотеки Android Design.
А пока вы можете посмотреть в трекере проблем, чтобы найти исправление, которое может быть там опубликовано, но на данный момент я ничего не знаю.
И да, это касается только Lollipop и выше.
источник
Это работает для меня в Библиотеке дизайна 23.1.1:
Установите цвет подсказки в атрибутах xml TextInputLayout:
источник
Эта проблема исправлена в версии 22.2.1.
источник
вы должны использовать
android.support.v7.widget.AppCompatEditText
какEditText
и установить,android:hint
как показано нижеисточник
Используйте этот фрагмент кода. Убедитесь, что ваша активность - AppCompatActivity. И зависимость также от последних версий
Обновите студию Android до последней версии. см. вывод здесь
источник
Если вы устанавливаете подсказку EditText программно, это не сработает! Вам нужно установить подсказку для TextInputLayout самостоятельно.
Вот XML, если вам интересно:
источник
Эта проблема решена в
v23.0.1
библиотеке поддержки дизайна. Я также обновил своиappcompat-v7
to23.0.1
,compileSdkVersion
to23
иbuildToolsVersion
to23.0.1
в build.gradle .источник
Я решил свою проблему с помощью этого кода:
Ключевым моментом здесь является расширение
bringToFront
. Он заставляетTextInputLayout
повторно рисовать, что не то же самое, что и выполнениеinvalidate()
. Если вы пытаетесь отобразитьTextInputLayout
на a,view
который имеетanimations
илиtranistions
, вам необходимо выполнить приведенный выше код в концеanimation
илиtransition
. Просто убедитесь, что приведенный выше код работает в пользовательском интерфейсеthread
.источник
Похоже, эта проблема появляется, когда вы устанавливаете onFousListener на EditText - попробуйте расширить EditText и поддержать несколько onFocusListener
источник
Установите цвет подсказки, который контрастирует с фоном EditText.
<item name="android:textColorHint">#FF424242</item>
Связано:
setHintTextColor () в EditText
Изменить цвет подсказки EditText при использовании TextInputLayout
Как изменить цвет плавающей метки TextInputLayout
источник
Проблема решена: перейдите к build.gradle вашего приложения и проверьте библиотеку дизайна. compile 'com.android.support:design:22.2.1' Он должен быть 22.2.1 или новее.
источник
Проблема в цвете подсказки. При наборе текста он становится белым. Измените цвет подсказки или цвет фона. Вы увидите подсказку при вводе.
источник
Есть простое решение, так как это сработало для меня
Просто добавьте android: theme = "@ style / Base.TextAppearance.AppCompat" в TextEditLayout, и он должен работать, и вы можете изменить тему по своему усмотрению .
источник
Просто добавьте:
android:hint="your_hint"
дляTextInputLayout
.источник
Я нашел кое-что другое.
При установке стиля для
fragment
,Ошибка исчезла, когда я попробовал разные стили, кроме
"Theme_DeviceDefault_Dialog"
.Попробуйте.
источник