2016-01-08 16 views
6

'un çekilebilir kısmının üzerinde duracak şekilde ayarlanır. TextInputLayout etiketinin, kullanıcının EditText'e odaklandığı veya yazdığı zaman bir EditText'in sola çekilebileceği şekilde gösterilebilmesi mümkündür.TextInputLayout etiketi, bir EditText

enter image description here

:

İşte enter image description here

alıyorum çıktısı:

İşte
<android.support.design.widget.TextInputLayout 
       android:id="@+id/completion_date_layout2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:layout_weight="1" 
       android:orientation="horizontal"> 

       <EditText 
        android:id="@+id/etTaskDate" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:hint="@string/title_completion_date" 
        android:inputType="text" 
        android:drawableLeft="@drawable/ic_date" 
        android:paddingBottom="15dp" 
        android:drawablePadding="5dp" 
        android:textSize="@dimen/fields_text_size"/> 
      </android.support.design.widget.TextInputLayout> 

İstenen çıkış: İşte

EditText ait xml olduğu
+2

Hiç bir çözüm buldunuz mu? Aynı sorunu yaşıyorum. –

+0

@RaymonddelaCroix Ne yazık ki arkadaşım geçen aydan beri yok. Yaptığım geçici çözümün altında yayınladım. :) – icaneatclouds

cevap

3

Teşekkür paket düzeyinde görünürlük ile mCollapsingTextHelper erişimini açan ve daha sonra alan ad konumlamasını yöneten orijinal onLayout yönteminden kodun bir kısmını tekrarlayan aynı paket. __4DP__ değeri piksellere dönüştürülen 4dp değeridir, herkesin bunun için bir yardımcı yönteme sahip olduğundan eminim.

<android.support.design.widget.TextInputLayoutEx 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Mobile"> 
    <android.support.design.widget.TextInputEditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/ic_phone_black_24dp" 
     android:drawablePadding="4dp"/> 
</android.support.design.widget.TextInputLayoutEx> 

Ve sonuç bu com.android.support:design:25.3.1

için çalışır anda

Collapsed and expanded state

geçerli: xml düzende

sadece android.support.design.widget.TextInputLayout android.support.design.widget.TextInputLayoutEx için geçiş Düzeninizin şöyle
+0

Bunu başka bir proje üzerinde deneyecek. Teşekkürler – icaneatclouds

+0

EPIC, bir çekicilik gibi çalıştı. @icaneatclouds bu kodu 'cevap' olarak işaretlemeyi düşünür. – MiguelCatalan

-1

Ben bir workaroun yaptık d bu konuda. Biraz güvenilmez olabilir ama benim için çalışıyor.

Burada EditText içindeki metinden önce bir unsur yerleştirilerek edildi What did
String spacer="  "; 
EditText myEditText= (EditText)findViewById(R.id.myEditText); 
myEditText.setText(spacer + "Today"); 
myEditText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_calendar, 0, 0, 0); 

ardından çekilebilir programlama yoluyla sola ekleyin: İşte kodudur.

Ama EditText içeriğini getirmeden önce bu boşlukları kaldırmak için emin olun:

Bu i kelime "Bugün" önce 8 boşluk kırpılmış anlamına
String title = myEditText.getText().toString().substring(8); 

.

+0

İndirgemeyi açıklayabilir misiniz? Soruma ilişkin geçerli bir yanıt yok, bu yüzden kısa bir çözüm buldum. – icaneatclouds

2

Animasyon ve frame_layout'u kullanarak sol simgeyi canlandırabilir, this bağlantısını deneyebilirsiniz, sizin için yararlı olabilir.

İşte
package android.support.design.widget; 

import android.content.Context; 
import android.graphics.Rect; 
import android.util.AttributeSet; 

public final class TextInputLayoutEx extends TextInputLayout { 

    private final int mDefaultPadding = __4DP__; 
    private final Rect mTmpRect = new Rect(); 

    public TextInputLayoutEx(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 
     super.onLayout(changed, left, top, right, bottom); 
     if (isHintEnabled() && mEditText != null) { 
      final Rect rect = mTmpRect; 
      ViewGroupUtils.getDescendantRect(this, mEditText, rect); 
      mCollapsingTextHelper.setCollapsedBounds(
       rect.left + mDefaultPadding, getPaddingTop(), 
       rect.right - mDefaultPadding, bottom - top - getPaddingBottom()); 
      mCollapsingTextHelper.recalculate(); 
     } 
    } 

} 

biz yeni bir sınıf koyun: orijinal kod en az tekrarlar basit subclassing ile elde edilebilecek bir küçük kaçamak sol Java'nın üyesi erişim modeli ve Google'ın geliştiriciler için