TextInputLayout, kullanıcı odaklanmadan önce EditText ipucunu göstermiyor


97

EditTexts ile kayan etiketi göstermek için yakın zamanda yayınlanan Android Tasarım Destek Kitaplığı'nı kullanıyorum. Ancak, UI işlendiğinde EditText'teki İpucu'nun gösterilmemesi sorunuyla karşı karşıyayım, ancak EditTexts'e odaklandıktan sonra İpucu görüyorum.

Düzenim aşağıdaki gibidir:

<?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>

Ayrıca TextInputLayoutkullanma yöntemi için ipucu belirlemeye çalıştım setHintama şans yok.

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());

Bende de aynı sorun var. Sürprizime göre, uygulamayı 4.1 emülatöründe çalıştırmak gayet iyi çalıştı, ancak M önizlememde Nexus TextInputLayout yanlış davranıyordu ve gömülü EditText için ipucu göstermiyordu.
sashomasho

İpucu renginizi kontrol edebilir misiniz veya görünüm arka plan renginizi değiştirmeyi deneyebilir misiniz, belki oradalar ama renk yüzünden göremiyorsunuz
Ultimo_m

@Ultimo_m bence ipucu rengi problem olmamalı. Ancak arka plan rengini değiştirdikten sonra bir göz atmaya çalışacağım.
Shajeel Afzal 01

1
@Shajeel Afzal Size bu öneriyi söylüyorum çünkü sizinle aynı sorunu yaşadım ve görünüme arka planı eklediğimde ipucunu gördüm. Onu bir parçanın içinde kullanıyorum.
Java'dan

2
Parçalar ekleyip çıkardığımda bu sorunu görüyorum. Ancak parçaları gösterirsem / gizlersem, bu sorunu görmüyorum.
Dave Jensen

Yanıtlar:


84

Güncelleme:

Bu, kütüphanenin 22.2.1 sürümünde düzeltilen bir hatadır.

Orijinal Cevap:

@Shkschneider tarafından belirtildiği gibi, bu bilinen bir hatadır . Github kullanıcısı @ ljubisa987 kısa süre önce geçici bir çözüm için bir Özet yayınladı:

https://gist.github.com/ljubisa987/e33cd5597da07172c55d

Yorumlarda belirtildiği gibi, geçici çözüm yalnızca Android Lollipop ve daha eski sürümlerde çalışır. Android M Önizleme'de çalışmaz.


1
Peki, Android MDC bir önizleme sürümüdür.
Dave Jensen

1
BTW, görünen o ki hata durumu artık "Gelecek Sürüm".
Dave Jensen

2
Yorum # 28 burada: code.google.com/p/android/issues/… benim için çalışıyor
J_Sizzle

1
22.2.1 sürümünde düzeltildi.
Jdruwe

3
Bunun V22.2.1'de düzeltildiğinden emin miyiz? Bu sorunu Android 5.1.1 sürümünde çalışan 22.2.1 tasarım kitaplığında yaşıyorum. Bir Araç Çubuğunda, Aktiviteye Geçiş Yaptığım iki EditText var ve ipucu metni odaklanana kadar gösterilmiyor.
StuStirling

13

Bu, Android Tasarım kütüphanesinin bilinen bir hatasıdır . Bu edilmiş kabul ve atanmış .

Yani bunu bir sonraki Android Tasarım kitaplığı sürümünde düzeltmiş olmalısınız.

Bu arada, sorun izleyiciyi orada yayınlanabilecek bir hacky düzeltme için izleyebilirsiniz, ancak şu an için herhangi bir şey bilmiyorum.

Ve evet, sadece Lollipop ve üstünü etkiler.


1
Bu sorun 22.2.1 sürümünde düzeltildi
Sam

11

Bu benim için Tasarım Kitaplığı 23.1.1'de çalışıyor:

TextInputLayout'un xml niteliklerinde ipucu rengini ayarlayın:

    <android.support.design.widget.TextInputLayout
        ....
        android:layout_margin="15dp"
        android:textColorHint="@color/hintColor"
        android:layout_width="match_parent"
        ...

textColorHint özelliği onu benim için de düzeltti.
JoM


5

Kullanmanız gereken android.support.v7.widget.AppCompatEditTextşekilde EditTextve set android:hintaşağıda gibi

<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <android.support.v7.widget.AppCompatEditText
                android:id="@+id/etx_first_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"                    
                android:inputType="text"
                android:hint="@string/hint_first_name"/>
    </android.support.design.widget.TextInputLayout>

3
   <android.support.design.widget.TextInputLayout
            android:id="@+id/editText1"
            android:layout_margin="15dp"
            android:layout_centerVertical="true"
            android:layout_width="match_parent"

            android:layout_height="wrap_content">

              <AutoCompleteTextView
                android:id="@+id/editText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:singleLine="true"
                android:hint="Add City" />

          </android.support.design.widget.TextInputLayout>

Bu kod parçacığını kullanın.Etkinliğinizin AppCompatActivity olduğundan emin olun. Ve bağımlılık da son sürümlerde

compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:design:22.2.0'

Android stüdyosunu en son sürüme güncelleyin. çıktıyı buradan görün


3

EditText ipucunuzu programlı olarak ayarlıyorsanız, işe yaramaz! TextInputLayout üzerinde ipucu ayarlamanız gerekir.

TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.usernameTextInputLayout);
textInputLayout.setHint(getString(R.string.username_hint));

Merak ediyorsanız işte XML:

        <android.support.design.widget.TextInputLayout
            android:id="@+id/usernameTextInputLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/usernameEt"
                android:layout_width="match_parent"
                android:layout_height="@dimen/default_height"
                android:layout_marginEnd="@dimen/default_margin"
                android:layout_marginStart="@dimen/default_margin"
                android:maxLength="@integer/username"
                tools:hint="Username" />

        </android.support.design.widget.TextInputLayout>

3

Bu sorun, v23.0.1destek tasarım kitaplığında çözülmüştür . Ben de güncellenmiş appcompat-v7To 23.0.1, compileSdkVersioniçin 23& buildToolsVersioniçin 23.0.1de build.gradle .

android {    
compileSdkVersion 23
buildToolsVersion "23.0.1"
}

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}

Destek tasarım sürümünü değiştirirken, completeSdkVersion'ı, buildtools sürümünü ve appCompatVersion'ı değiştirmek gerekli midir?
srinivas

Bunun nedeni, 'destek kitaplıkları' v23'ün projeyi derlemek için API23'ü gerektirmesidir. Dolayısıyla ana ilişki 'destek kitaplıkları' ve 'compileSdkVersion' arasındadır. 'TargetSdkVersion' veya 'minSdkVersion' daha düşük olsa bile, her zaman 'compileSdkVersion' ile eşleşmelisiniz. Nedeni basit, kitaplığın sürümü Android sdk'nin inşa edildiği sürümüne karşı yansıtıyor.
Wahib Ul Haq

2

Sorunumu bu kodla çözdüm:

new Handler().postDelayed(
        new Runnable() {
            @Override
            public void run() {
                TextInputLayout til = (TextInputLayout) someParentView.findViewById(R.id.til);
                til.setHint("Your Hint Text");
                til.bringToFront();
            }
        }, 10);

Buradaki anahtar bringToFront. TextInputLayoutYapmakla aynı şey olmayan çizimini yeniden yapmaya zorlarinvalidate() . Bir olan veya olan bir TextInputLayoutüzerinde görüntülemeye çalışıyorsanız , yukarıdaki kodu veya ' nin sonunda çalıştırmanız gerekir . Yukarıdaki kodun kullanıcı arayüzünde çalıştığından emin olun .viewanimationstranistionsanimationtransitionthread



0

Bu sorun, onFousListener'ı EditText üzerinde ayarladığınızda görülüyor gibi görünüyor - EditText'i genişletmeyi ve birden çok onFocusListeners'ı desteklemeyi deneyin


0

Sorun çözüldü: Uygulamanızda build.gradle'a gidin ve tasarım kitaplığını kontrol edin. 'com.android.support:design:22.2.1' derleyin 22.2.1 veya daha yeni olmalıdır.


0

Sorun ipucu rengidir. Bir şey yazarken beyaz olur. Lütfen ipucu rengini veya arka plan rengini değiştirin. Yazarken ipucunu göreceksiniz.


0

Bunun benim için çalıştığı için bunun basit bir çözümü var

<android.support.design.widget.TextInputLayout
    android:id="@+id/activity_login_til_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="27dp"
    android:layout_marginTop="24dp"
    android:padding="10dp"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="#000000"
    app:passwordToggleDrawable="@drawable/passwordviewtoggleselector"
    android:theme="@style/Base.TextAppearance.AppCompat">
      <!---- add this line and theme as you need ----->
    <android.support.design.widget.TextInputEditText
        android:id="@+id/activity_login_et_password"
        android:layout_width="match_parent"
        android:layout_height="58dp"
        android:hint="Password"
        android:inputType="textPassword"
        android:padding="10dp"
        android:textColor="#f5ab3a"
        android:textColorHint="#e6d2d1cf"
        android:textSize="20dp" />

</android.support.design.widget.TextInputLayout>

Sadece eklemek tema = "@ stil / Base.TextAppearance.AppCompat": android TextEditLayout için ve çalışması gerekir ve ihtiyacınız gibi temasını değiştirebilirsiniz.



0

Farklı bir şey buldum.

İçin stil belirlerken fragment,

f1.setStyle(DialogFragment.STYLE_NO_FRAME,android.R.style.Theme_DeviceDefault_Light);

Şundan farklı Tarzlar denediğimde hata gitmişti "Theme_DeviceDefault_Dialog" .

Bir şans ver.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.