L'API 21 fornisce un metodo per utilizzare la seguente funzionalità:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
Sto cercando di far fluttuare i suggerimenti EditText.
Grazie!
L'API 21 fornisce un metodo per utilizzare la seguente funzionalità:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
Sto cercando di far fluttuare i suggerimenti EditText.
Grazie!
Risposte:
È necessario aggiungere quanto segue al file build.gradle del modulo:
implementation 'com.google.android.material:material:1.0.0'
E usa com.google.android.material.textfield.TextInputLayout nel tuo 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>
Suggerimento mobile EditText:
Aggiungi sotto la dipendenza in gradle:
compile 'com.android.support:design:22.2.0'
Nel layout:
<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'
.
Sì, dal 29 maggio 2015 questa funzionalità è ora disponibile nella libreria di supporto per la progettazione Android
Questa libreria include il supporto per
La libreria di supporto Android può essere importata all'interno di gradle nelle dipendenze:
compile 'com.android.support:design:22.2.0'
Dovrebbe essere incluso in GradlePlease! E come esempio per usarlo:
<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>
A proposito, l'editor potrebbe non capire che AutoCompleteTextView è consentito all'interno di TextInputLayout.
Android non ha fornito un metodo nativo. Né l'AppCompat.
Prova questa libreria: https://github.com/rengwuxian/MaterialEditText
Questo potrebbe essere quello che vuoi.
Importa le librerie di supporto, nel file build.gradle del tuo progetto, aggiungi le seguenti righe nelle dipendenze del progetto:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
}
Usa il seguente TextInputLayout nel layout dell'interfaccia utente:
<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>
Quindi, chiama setHint su TextInputLayout subito dopo la chiamata setContentView perché, per animare l'etichetta mobile, devi solo impostare un suggerimento, usando il metodo setHint.
final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");
setHint()
. Funziona con il suggerimento impostato EditText
nel layout xml.
Il suggerimento di @andruboy su https://gist.github.com/chrisbanes/11247418 è probabilmente la soluzione migliore.
https://github.com/thebnich/FloatingHintEditText funziona con appcompat-v7 v21.0.0, ma poiché la v21.0.0 non supporta i colori accentati con sottoclassi di EditText
, la sottolineatura di FloatingHintEditText
sarà il nero o il bianco solido predefinito. Inoltre, l'imbottitura non è ottimizzata per lo stile Material EditText
, quindi potrebbe essere necessario regolarla.
No non è così. Mi aspetto questo in una futura versione di API, ma per ora siamo bloccati con EditText. Un'altra opzione è questa libreria:
https://github.com/marvinlabs/android-floatinglabel-widgets
Per un modo più semplice di utilizzare InputTextLayout, ho creato questa libreria che riduce il tuo codice XML a meno della metà e ti offre anche la possibilità di impostare un messaggio di errore e un messaggio di suggerimento e un modo semplice per eseguire il tuo convalide. https://github.com/TeleClinic/SmartEditText
Aggiungi semplicemente
compile 'com.github.TeleClinic:SmartEditText:0.1.0'
Quindi puoi fare qualcosa del genere:
<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.*" />
Utilizzare il TextInputLayout
fornito dalla libreria dei componenti dei materiali :
<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>