Проблема с двойной подсказкой TextInputLayout и EditText
Я хочу установить подсказку с помощью java в EditText (который находится в TextInputLayout).
Код, используемый для настройки подсказки:
aET = (EditText) findViewById(R.id.aET);
aET.setHint("h?");
Но даже когда edittext сфокусирован, подсказка отображается дважды (внутри edittext также).
Пожалуйста, дайте мне знать, если кто-то столкнулся и нашел обходное решение
, когда сфокусирован editText...
![Second]()
, когда editText не сфокусирован.
![First]()
EDIT [10 июля 2015]:
<android.support.design.widget.TextInputLayout
android:id="@+id/aTIL"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/aET" />
</android.support.design.widget.TextInputLayout>
Ответы
Ответ 1
Я нашел решение!
В EditText добавить
android:textColorHint="@android:color/transparent"
И в коде установите подсказку из EditText
aET.setHint("h?");
Подсказка в вашем editText скрыта и отображается подсказка из TextInputLayout.
EDIT:
Другое решение (лучшее)
Обновить Graddle с новой версией android: design
compile 'com.android.support:design:22.2.1'
Ответ 2
Эта проблема возникает из-за того, что подсказка из xml передается в TextInputLayout, поэтому ее можно отобразить как плавающий подсказку. Но когда вы устанавливаете его программно, подсказка устанавливается в EditText, которая затем приводит к двум подсказкам (один из xml, который является плавающим подсказкой, и один из них вы устанавливаете программно и является нормальным подсказкой EditText). Если вы хотите изменить плавающий подсказку, вы должны установить подсказку в TextInputLayout.
После этого код будет выглядеть следующим образом:
aTIL = (TextInputLayout) findViewById(R.id.aTIL);
aTIL.setHint("h?");
Ответ 3
У меня также была эта проблема.
когда мне нужно было обновить подсказку, я (ошибочно) сделал это как на EditText
, так и на TextInputLayout
, что привело к размытию.
решение заключалось в том, чтобы не называть EditText.setHint()
, а только TextInputLayout.setHint()
Ответ 4
сначала скомпилировать зависимость
compile 'com.rengwuxian.materialedittext: library: 2.1.3'
добавьте это в свой xml
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/etId"
android:layout_width="match_parent"
android:layout_height="70dip"
android:hint="Hint goes here"
android:textColor = "#000000"
android:textSize="15sp"
app:met_accentTypeface="fonts/yourcustomfonts.ttf"
app:met_floatingLabel="normal"
app:met_floatingLabelTextColor="#ff0000"
app:met_floatingLabelTextSize="15sp"
app:met_hideUnderline="true"
app:met_textColorHint="#ff00ff"
app:met_typeface="fonts/yourcustomfont.ttf"/>
добавить xmlns: app = "http://schemas.android.com/apk/res-auto"
Ответ 5
Простое использование этого программного обеспечения для меня
TextInputLayout til = new TextInputLayout(this);
til.setHintTextAppearance(android.R.style.TextAppearance_Large);
Вы можете настроить стиль , как я упоминал ниже...
<style name="TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/colorPrimaryDark</item>
<item name="android:textColorHint">@color/colorPrimaryDark</item>
<item name="android:textSize">23sp</item>
</style>
TextInputLayout til = new TextInputLayout(this);
til.setHint("hai);
til.setHintTextAppearance(R.style.TextInputLayout);
Ответ 6
Вы можете использовать два текста подсказки. Один для TextInputLayout и другой для текста редактирования внутри него. Ниже приводится ссылка:
<android.support.design.widget.TextInputLayout
style="@style/editText_layout"
android:id="@+id/entryScreenProduction_editText_percentCompleted_layout"
android:hint="%Completed">
<EditText
android:id="@+id/entryScreenProduction_editText_percentCompleted"
style="@style/editTextNotes"
android:gravity="center_vertical|top"
android:inputType="numberDecimal"
android:textAlignment="viewStart"
android:hint="0.0"/>
</android.support.design.widget.TextInputLayout>
Но это имеет проблему. Пользовательский интерфейс будет выглядеть ниже. Советы будут перекрываться.
![введите описание изображения здесь]()
Чтобы избежать вышеупомянутого уродливого пользовательского интерфейса, вы должны управлять этим из программы. Настройте текст подсказки EditText только тогда, когда есть фокус на поле, иначе удалите текст подсказки.
android:hint="0.0"
Удалите указанную выше строку из XML файла макета и выполните следующие действия:
m_editText_completed = (EditText) findViewById(R.id.entryScreenProduction_editText_percentCompleted);
m_editText_completed.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(b){
m_editText_completed.setHint("0.0");
}
else {
m_editText_completed.setHint("");
}
}
});
Надеюсь, это решает проблему. Божья скорость!