Android EditText görünümü Materyal Tasarımda Kayan İpucu


99

API 21, aşağıdaki özelliği kullanmak için bir yöntem sağlar mı:

http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels

EditText ipuçlarını kaydırmaya çalışıyorum.

Teşekkürler!



Aramam sırasında buna da rastladım, ancak Android'in yerel bir yöntem sağlayıp sağlamadığını merak ediyordum.
xsorifc28

1
Bu, bize Android'de bir sorun olduğunu düşündürüyor. Materyal Tasarım API'sinde birkaç eksik boşluk var. Diğer bir örnek ise Kayan Eylem Düğmesidir.
motobói

Yanıtlar:


5

Aşağıdakileri modül build.gradle dosyanıza eklemeniz gerekir:

implementation 'com.google.android.material:material:1.0.0'

XML'nizde com.google.android.material.textfield.TextInputLayout kullanın:

       <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/text_input_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/my_hint">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="UserName"/>
   </com.google.android.material.textfield.TextInputLayout>

109

Kayan ipucu EditText:

Aşağıdaki bağımlılığı gradle'a ekleyin:

compile 'com.android.support:design:22.2.0'

Düzende:

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

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="UserName"/>
    </android.support.design.widget.TextInputLayout>

3
Şunlara dikkat edin: TextInputLayout, kullanıcı odaklanmadan önce EditText ipucunu göstermiyor tasarım destek kitaplığında hata var22.2.0
Ivan Chau

1
Bu XML'de EditText ve TextInputEditText kullanmak arasındaki fark nedir?
android geliştiricisi

2
Yeniden adlandırılan bağımlılık görünüyor implementation 'com.google.android.material:material:1.0.0-rc01'.
rmtheis

60

Evet, 29 Mayıs 2015 itibariyle bu işlevsellik artık Android Tasarım Destek Kitaplığı'nda sağlanmaktadır

Bu kitaplık aşağıdakileri içerir:

  • Yüzen etiketler
  • Kayan işlem düğmesi
  • Snackbar
  • Gezinme çekmecesi
  • ve dahası

3
OP'nin bahsedildiği gibi EditTexts ile kayan etiketler için bir eğitim biliyor musunuz?
AdamMc331


1
Vay canına, teşekkürler! Bunlara bakacağım ve nasıl gittiğini size bildireceğim!
AdamMc331

2
Üçüncüsü aradığım şeydi. TextInputLayout'a rastladım, ancak iyi bir örnek bulamadım (muhtemelen tüm yanlış terimleri arıyorum). Teşekkürler!
AdamMc331

18

Android destek kitaplığı, bağımlılıklarda gradle içinde içe aktarılabilir:

    compile 'com.android.support:design:22.2.0'

GradlePlease'e dahil edilmelidir! Ve bunu kullanmak için bir örnek olarak:

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

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextViewTo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="To"
        android:layout_marginTop="45dp"
        />
</android.support.design.widget.TextInputLayout>

Btw, editör TextInputLayout içinde AutoCompleteTextView'a izin verildiğini anlayamayabilir.


11

Android yerel bir yöntem sağlamadı. Ne de AppCompat.

Bu kitaplığı deneyin: https://github.com/rengwuxian/MaterialEditText

İstediğin bu olabilir.


1
Hata alıyorum: (1) Muhtemelen appcompat-v7 nedeniyle gradle senkronizasyonunda "Öznitelik" renk "zaten tanımlanmış". Ondan kurtulamıyorum. Anny önerileri?
mdzeko

MaterialEditText "renk" adında bir öznitelik tanımlamadı, bu yüzden başka bir yerde yanlış bir şey olmalı.
rengwuxian

9

Destek Kitaplıklarını İçe Aktar, Projenizin build.gradle dosyasında, projenin bağımlılıklarına aşağıdaki satırları ekleyin:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

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

Kullanıcı Arayüzü Düzeninizde aşağıdaki TextInputLayout öğesini kullanın:

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

    <EditText
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:hint="Username"/>

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

Bundan sonra, setContentView çağrısından hemen sonra TextInputLayout üzerinde setHint çağırın çünkü kayan etikete animasyon uygulamak için setHint yöntemini kullanarak bir ipucu ayarlamanız yeterlidir.

final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");

1
En azından 23.1.1'i kullanarak, için açık bir çağrı kullanmanıza gerek yoktur setHint(). EditTextXml düzeninde ayarlanan ipucu ile çalışır .
Ionoclast Brigham

3

@ andruboy'un https://gist.github.com/chrisbanes/11247418 önerisi muhtemelen en iyi seçeneğinizdir.

https://github.com/thebnich/FloatingHintEditText türü appcompat-v7 v21.0.0 ile çalışır, ancak v21.0.0, alt sınıflarında vurgulu renkleri desteklemediğinden, alt EditTextçizgisi FloatingHintEditTextvarsayılan düz siyah veya beyaz olacaktır. Ayrıca dolgu Materyal stili için optimize edilmemiştir EditText, bu nedenle onu ayarlamanız gerekebilir.


Teşekkür ederim. Sanırım google, google.com/design/spec/components/ gibi materyal tarzı düzenleme metni uyarısı oluşturmak için bir api sağlamadı . Amatör sorular için özür dilerim, ben de materyal tasarımına uyum sağlamaya çalışıyorum Google'ın api / kitaplıklarını kullanabildiğim ve herhangi bir dış kitaplığa karşı sağlanan her şeyi anlamaya çalışabildiğim için. Tekrar teşekkürler!
xsorifc28


0

InputTextLayout'u kullanmanın daha kolay bir yolu için, XML kodunuzu yarıdan daha aza indiren bu kitaplığı oluşturdum ve ayrıca bir hata mesajı ve bir ipucu mesajı ayarlayabilmenizi ve işinizi yapmanın kolay bir yolunu sağladım. doğrulamalar. https://github.com/TeleClinic/SmartEditText

Basitçe ekleyin

compile 'com.github.TeleClinic:SmartEditText:0.1.0'

O zaman bunun gibi bir şey yapabilirsiniz:

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/emailSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Email"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setRegexErrorMsg="Wrong email format"
    app:setRegexType="EMAIL_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/passwordSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Password"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setPasswordField="true"
    app:setRegexErrorMsg="Weak password"
    app:setRegexType="MEDIUM_PASSWORD_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/ageSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Age"
    app:setMandatory="false"
    app:setRegexErrorMsg="Is that really your age :D?"
    app:setRegexString=".*\\d.*" />

0

Material Components LibraryTextInputLayout tarafından sağlananları kullanın :

    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Label">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </com.google.android.material.textfield.TextInputLayout>

görüntü açıklamasını buraya girin

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.