L'API 21 fournit-elle une méthode pour utiliser la fonctionnalité suivante:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
J'essaye de faire flotter les indices EditText.
Merci!
L'API 21 fournit-elle une méthode pour utiliser la fonctionnalité suivante:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
J'essaye de faire flotter les indices EditText.
Merci!
Réponses:
Vous devez ajouter ce qui suit à votre fichier build.gradle de module:
implementation 'com.google.android.material:material:1.0.0'
Et utilisez com.google.android.material.textfield.TextInputLayout dans votre 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>
Indice flottant EditText:
Ajoutez ci-dessous la dépendance dans gradle:
compile 'com.android.support:design:22.2.0'
Dans la mise en page:
<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'
.
Oui, depuis le 29 mai 2015, cette fonctionnalité est désormais fournie dans la bibliothèque de support de conception Android
Cette bibliothèque inclut la prise en charge de
La bibliothèque de support Android peut être importée dans gradle dans les dépendances:
compile 'com.android.support:design:22.2.0'
Il devrait être inclus dans GradlePlease! Et comme exemple pour l'utiliser:
<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, l'éditeur peut ne pas comprendre que AutoCompleteTextView est autorisé dans TextInputLayout.
Android n'a pas fourni de méthode native. Ni l'AppCompat.
Essayez cette bibliothèque: https://github.com/rengwuxian/MaterialEditText
C'est peut-être ce que vous voulez.
Importez les bibliothèques de support, dans le fichier build.gradle de votre projet, ajoutez les lignes suivantes dans les dépendances du projet:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
}
Utilisez TextInputLayout suivant dans votre disposition d'interface utilisateur:
<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>
Ensuite, appelez setHint sur TextInputLayout juste après l'appel setContentView car, pour animer l'étiquette flottante, il vous suffit de définir un indice à l'aide de la méthode setHint.
final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");
setHint()
. Cela fonctionne avec le conseil défini sur le EditText
dans le format xml.
La suggestion de @ andruboy de https://gist.github.com/chrisbanes/11247418 est probablement votre meilleur pari.
https://github.com/thebnich/FloatingHintEditText fonctionne avec appcompat-v7 v21.0.0, mais comme la v21.0.0 ne prend pas en charge les couleurs d'accentuation avec les sous-classes de EditText
, le soulignement de FloatingHintEditText
sera le noir ou blanc solide par défaut. De plus, le remplissage n'est pas optimisé pour le style Matériau EditText
, vous devrez peut-être l'ajuster.
Non, ce n'est pas le cas. Je m'attendrais à cela dans une future version de l'API, mais pour l'instant, nous sommes bloqués avec EditText. Une autre option est cette bibliothèque:
https://github.com/marvinlabs/android-floatinglabel-widgets
Pour un moyen plus simple d'utiliser InputTextLayout, j'ai créé cette bibliothèque qui réduit votre code XML à moins de la moitié, et vous offre également la possibilité de définir un message d'erreur ainsi qu'un message d'indication et un moyen simple de faire votre validations. https://github.com/TeleClinic/SmartEditText
Ajoutez simplement
compile 'com.github.TeleClinic:SmartEditText:0.1.0'
Ensuite, vous pouvez faire quelque chose comme ceci:
<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.*" />
Utilisez le TextInputLayout
fourni par la bibliothèque de composants de matériaux :
<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>