Androidのソフトキーボードでは、Android:inputType="numberDecimal"
を使用して、zキーボードの代わりに数字を表示するようにソフトキーボードを設定できます。ただし、トップのみを表示する場合はどうすればよいですか番号行1 2 3 4 5 6 7 8 9 0
であり、@ # $ % ...
で始まる次の行ではありませんか?
聞いてくれてありがとう!
コードに次の行のみを追加する必要があります。
input.setRawInputType(Configuration.KEYBOARD_12KEY);
これはonly数字キーボードを表示します。
Android:inputType="phone"
Android:digits="1234567890"
オプションです
電話番号パッドは、私が見つけた最も近いものです(EditText
にinputType="phone"
を設定します)。
受け入れられた答えは私にはうまくいきませんでした(OnePlus 3tおよびSamsung Galaxy S6/S7電話でテスト済み)。
このソリューションはnumberPasswordを使用しますが、EditTextのデフォルトの変換方法をオーバーライドして、ドットを表示する代わりに文字を表示します。
<EditText
Android:id="@+id/userid"
Android:inputType="numberPassword"
Android:maxLength="6"
/>
// Numeric 6 character user id
EditText input = findViewById(R.id.userid);
// Process input and show characters instead of dots
input.setTransformationMethod(SingleLineTransformationMethod.getInstance());
最後に調べたところ、Androidはそのための良いオプションがありませんでした。ソフトキーボードのようなユーザーインターフェースの独自のバージョンを作成する必要がありました。
答えを投稿しました here が、簡単にするために再投稿します:
Seems Androidは、私たちが求めていた機能を追加しました。これは、単純なEditText数値入力に使用するxmlです:
Android:inputType="numberPassword"
Android:digits="0123456789"
Android:singleLine="true"
Android:ems="4"
Android:textColor="@Android:color/black"
Android:gravity="center"
受け入れられた答えは私にはうまくいきませんでした。他の不要な文字を表示し続けました
InputTypeをnumberPassword
に変更し、パスワードドットを無効にすることで、必要な動作を実現する方法を見つけました。
textInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
textInput.transformationMethod = SingleLineTransformationMethod()
これをXamarinのAndroidで実装しました。したがって、私のコードはC#です。ただし、プリンシパルは同じままです。edittextの属性をAndroid:inputType="numberPassword"
に設定できます。
次に、コード内で、カスタム変換メソッドを編集テキストビューに追加します。
holder.edtxtQty.TransformationMethod = new HiddenPasswordTransformationMethod();
private class HiddenPasswordTransformationMethod : global::Android.Text.Method.PasswordTransformationMethod
{
public override Java.Lang.ICharSequence GetTransformationFormatted(Java.Lang.ICharSequence source, View view)
{
return new PasswordCharSequence(source);
}
}
private class PasswordCharSequence : Java.Lang.Object, Java.Lang.ICharSequence
{
private char DOT = '\u2022';
private Java.Lang.ICharSequence _source;
public PasswordCharSequence(Java.Lang.ICharSequence source)
{
_source = source;
}
public char CharAt(int index)
{
return _source.CharAt(index);
}
public int Length()
{
return _source.Length();
}
public Java.Lang.ICharSequence SubSequenceFormatted(int start, int end)
{
return _source.SubSequenceFormatted(start, end); // Return default
}
public IEnumerator<char> GetEnumerator()
{
return _source.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _source.GetEnumerator();
}
}