2015-07-30 22 views
8

Design lib's ile birlikte EditText'i kullanırken (ver 22.2.1) TextInputLayout alma ipucu program aracılığıyla null değerini döndürür.EditText getHint() null tasarım destek kitaplığını kullanırken null değerini döndürür

Zorunlu bir alana yıldız işareti '*' eklemeye çalışıyorum, bu nedenle EditText.getHint(), ancak null döndürdüğü gerçeği bu durumda bir sorundur.

Asterisk overlays the hint

EditText editText = (EditText) findViewById(R.id.edit2); 
String hint = String.format("%s *", editText.getHint()); 
editText.setHint(hint); 
basit bir kod örnekleme: Layout.xml:

<android.support.design.widget.TextInputLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    <EditText 
      android:id="@+id/edit2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/hello_world" 
      android:inputType="text"/> 
</android.support.design.widget.TextInputLayout> 

Java:

EditText editText = (EditText) findViewById(R.id.edit2); 
if (editText.getHint() == null) throw new AssertionError("Hint should not be null"); 

bağımlılık: 'com.android.support:design derleme: 22.2.1 '

Önceden ilgili sorun here!

+1

[birçok ipucu ile ilgili sorunlar ile bağlantılıdır ] (https://code.google.com/p/android/issues/list?can=1&q=TextInputLayout+hint&colspec=ID+Type+Status+Owner+Summary+Stars&cells=tiles). Diğer yüzen etiket uygulamalarını denemeyi düşünebilirsiniz (http://android-arsenal.com/search?q=floating+label). – CommonsWare

+0

İyi bir şekilde açık olarak setHint(), TextInputLayout – dobridog

cevap

10

Aslında ipucu hamle

parent.setHint(parent.getHint() + "*"); 

Mutlu kodlama! :)

+8

Eğer 'TextInputEditText' kullanıyorsanız, 'TextInputLayout' değerini almak için getParent(). GetParent() 'i kullanmanız gerektiğini unutmayın. –

-1

Bu, 23.0.0 tasarım desteğinde giderilmiştir, ancak proje 23 numaralı API için derlenmiş olmalıdır.

TextInputLayout inputField = (TextInputLayout) findViewById(R.id.inputLayout); 
String hint = String.format("%s *", inputField.getHint()); 
inputField.setHint(hint); 
:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/inputField" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/hello_world" 
     android:inputType="text"/> 

Şimdi ipucu için fazladan bir karakter ekleyerek:

build.gradle

android { 
    compileSdkVersion 23 
    buildToolsVersion '23' 
    .... 
} 
dependencies{ 
    compile 'com.android.support:appcompat-v7:23.0.0' 
... 
} 

eskisi gibi EditText üzerine ipucu ayarlama

android.support.design.widget.TextInputLayout parent = (android.support.design.widget.TextInputLayout) yourEditText.getParent(); 
String hint = parent.getHint().toString(); 

Ve eklemek isterseniz * Böyle yapmak:

Böyle ipucu elde edebilirsiniz: EditText görünümü çevreleyen ana görünümüne TextInputLayout-

+2

üzerinde önceden yapılandırılmış ipucunda yansıtılmadığı gibi Bu 23.0.0 – superuserdo

+0

içinde düzeltildi. TextInputLayout'ta ipucu bildirme sorunu, ayarlanmadıkça ipucu değerinin gösterilmemesidir. programlı olarak (örnekte olduğu gibi).Ama sonunda metni düzenlemek için ipucu hareket etti. Cevabı günceller, doğrulamaktan çekinmeyin. – dobridog

+0

Sorunun konusu, TextInputLayout'un EditText öğesinin ipucu ile ilgili ipucu hakkındadır. Bu sorunun kütüphanenin 23'ünde hala mevcut olduğunu doğruladım. İpucu TextInputLayout öğesinde ayarlandığında bile, ipucu yine de null değerini döndürür. – superuserdo

0

İpucu onun ebeveyni düzeni

((TextInputLayout) view.getParent()). GetHint() TextInputLayout` `ile

var
İlgili konular