J'ai un EditText boîte et je veux le clavier par défaut qui vient quand il est sélectionné pour être le pavé numérique, puisque la plupart du temps , les utilisateurs en seront la saisie de numéros. Cependant, je ne veux autoriser les utilisateurs à entrer des caractères alphabétiques trop, si ils en ont besoin. À l'aide de android:inputType="number"
limite d'entrée de caractères numériques uniquement. Quelles options dois-je avoir?
Réponses
Trop de publicités?Je propose une solution plus Robuste:
Présenter à l'utilisateur la possibilité de choisir le type d'entrée:
BESOIN DE CORRECTIFS
-meilleure gestion d'afficher/masquer les boutons de sélection d'entrée
-probablement supprimer les suggestions lorsque le type d'entrée est lettre
Ici, l'activité est:
package mobi.sherif.numberstexttextview;
import android.os.Bundle;
import android.app.Activity;
import android.text.InputType;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText mEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEdit = (EditText) findViewById(R.id.input);
mEdit.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean focused) {
findViewById(R.id.llmenu).setVisibility(focused?View.VISIBLE:View.GONE);
}
});
}
public void onNumbers(View v) {
mEdit.setInputType(InputType.TYPE_CLASS_NUMBER);
}
public void onLetters(View v) {
mEdit.setInputType(InputType.TYPE_CLASS_TEXT);
}
}
Ici est l'activité du xml : activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignWithParentIfMissing="true"
android:layout_above="@+id/llmenu" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" >
<requestFocus />
</EditText>
</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/llmenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000000"
android:padding="0dp" >
<Button
android:id="@+id/buttonnumbers"
android:layout_width="0dp"
android:onClick="onNumbers"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Numbers" />
<Button
android:id="@+id/buttonletters"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="onLetters"
android:text="Letters" />
</LinearLayout>
</RelativeLayout>
Voici ce que vous cherchez:
Définir votre EditText
dans votre xml de cette façon:
<EditText
android:id="@+id/etTest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint">
</EditText>
Et l'appel suivant dans votre onCreate()
:
etTest = (EditText) findViewById(R.id.etTest);
etTest.setRawInputType(InputType.TYPE_CLASS_NUMBER);
// Note the "Raw"
Chaque fois que vous cliquez dans votre EditText
maintenant, vous pouvez entrer des chiffres ET des lettres! (Chiffres du clavier est affiché en premier)
Malheureusement, ce n'est pas possible, car un seul inputType peut être défini pour un EditText. Le suivant va juste montrer alphabatic caractères sur les boutons.
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text|number" />
Cependant, ce que je peux vous suggérer est, définissez votre type d'entrée numérique, et il suffit d'ajouter une petite switchKeyboard bouton sur votre formulaire à proximité du pavé numérique. Et l'ensemble de ses onClick
editText1.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
de sorte que les utilisateurs peuvent passer à des caractères alphabétiques, trop.
Fondamentalement, EditText inputtype est utilisé pour définir le type d'entrée dans votre EditText.
Les valeurs possibles pour l' android:inputtype
sont:
- texte
- textCapCharacters
- textCapWords
- textCapSentences
- textAutoCorrect
- textAutoComplete
- textMultiLine
- textImeMultiLine
- textNoSuggestions
- textUri
- textEmailAddress
- textEmailSubject
- textShortMessage
- textLongMessage
- textPersonName
- textPostalAddress
- textPassword
- textVisiblePassword
- textWebEditText
- textFilter
- textPhonetic
- nombre
- numberSigned
- numberDecimal
- téléphone
- datetime
- date
- le temps
ensuite, vous pouvez utiliser n'importe quelle valeur, montrant en exemple:
<EditText android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:inputType="number"
android:text="1212223"/>