Подтвердить что ты не робот

Проблема с двойной подсказкой 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>
4b9b3361

Ответ 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("");
                }
            }
        });

Надеюсь, это решает проблему. Божья скорость!