Чи надає API 21 спосіб використовувати таку функцію:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
Я намагаюся змінити підказки EditText.
Дякую!
Чи надає API 21 спосіб використовувати таку функцію:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
Я намагаюся змінити підказки EditText.
Дякую!
Відповіді:
Вам потрібно додати наступне у файл модуля build.gradle:
implementation 'com.google.android.material:material:1.0.0'
І використовуйте com.google.android.material.textfield.TextInputLayout у своєму XML:
<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>
Плаваюча підказка EditText:
Додайте нижче залежність у gradle:
compile 'com.android.support:design:22.2.0'
У макеті:
<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>
22.2.0
implementation 'com.google.android.material:material:1.0.0-rc01'
.
Так, станом на 29 травня 2015 року ця функція тепер доступна в Бібліотеці підтримки дизайну Android
Ця бібліотека включає підтримку
Бібліотеку підтримки Android можна імпортувати в gradle у залежностях:
compile 'com.android.support:design:22.2.0'
Це повинно бути включено до GradlePlease! І як приклад для його використання:
<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>
До речі, редактор може не зрозуміти, що AutoCompleteTextView дозволено в TextInputLayout.
Android не надав власного методу. Ані AppCompat.
Спробуйте цю бібліотеку: https://github.com/rengwuxian/MaterialEditText
Це може бути те, що ти хочеш.
Імпортуйте бібліотеки підтримки. У файл build.gradle вашого проекту додайте такі рядки у залежності проекту:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
}
Використовуйте наступний TextInputLayout у своєму макеті інтерфейсу користувача:
<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>
Потім викличте setHint на TextInputLayout відразу після виклику setContentView, оскільки для анімації плаваючої мітки вам просто потрібно встановити підказку, використовуючи метод setHint.
final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");
setHint()
. Це працює з підказкою, встановленою EditText
в xml у макеті.
Пропозиція @ andruboy https://gist.github.com/chrisbanes/11247418 - це, мабуть, найкращий вибір.
https://github.com/thebnich/FloatingHintEditText вид працює з appcompat-v7 v21.0.0, але оскільки v21.0.0 не підтримує кольори акценту з підкласами EditText
, підкресленням FloatingHintEditText
буде за замовчуванням суцільний чорний або білий. Крім того, прокладка не оптимізована для стилю "Матеріал" EditText
, тому вам, можливо, доведеться її налаштувати.
Ні, це не так. Я би очікував цього в майбутньому випуску api, але наразі ми застрягли в EditText. Інший варіант - це бібліотека:
https://github.com/marvinlabs/android-floatinglabel-widgets
Для більш простого способу використання InputTextLayout я створив цю бібліотеку, яка зменшує ваш XML-код менше, ніж наполовину, а також надає вам можливість встановити повідомлення про помилку, а також повідомлення про підказку та простий спосіб зробити ваш перевірки. https://github.com/TeleClinic/SmartEditText
Просто додайте
compile 'com.github.TeleClinic:SmartEditText:0.1.0'
Тоді ви можете зробити щось подібне:
<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.*" />
Скористайтеся TextInputLayout
наданою бібліотекою матеріальних компонентів :
<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>