菜鳥のアンドロイド実習の道---EditTextの最大長maxLengthとパスワードタイプInputTypeの取得について
xmlファイルにEditTextが宣言された場合、このプロパティが追加される可能性があります.
1このEditTextは最大何桁まで入力することができることを望んで、もしこのコードならば
android:maxLength="4"
このeditTextの長さを数文字の長さに初期化したい場合、このコードandroid:ems="10"
では、この2つの値をプログラムで取得したい場合はどうすればいいのでしょうか.ちょっと面倒です.
次に、最大表示長を取得する例として、コードを示します.
2このテキストボックスにパスワードを入力したい場合は、このような条件を追加します.
では、プログラムでこの属性を取得したい場合はどう書けばいいのでしょうか.
このコードを見てください.どんな意味でも、簡単にはわかりません.きっとできます.
1このEditTextは最大何桁まで入力することができることを望んで、もしこのコードならば
android:maxLength="4"
このeditTextの長さを数文字の長さに初期化したい場合、このコードandroid:ems="10"
では、この2つの値をプログラムで取得したい場合はどうすればいいのでしょうか.ちょっと面倒です.
次に、最大表示長を取得する例として、コードを示します.
public int getMaxLength()
{
int length =0;
try
{
InputFilter[] inputFilters = getFilters();
for(InputFilter filter:inputFilters)
{
Class<?> c = filter.getClass();
if(c.getName().equals("android.text.InputFilter$LengthFilter"))
{
Field[] f = c.getDeclaredFields();
for(Field field:f)
{
if(field.getName().equals("mMax"))
{
field.setAccessible(true);
length = (Integer)field.get(filter);
}
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
mMaxLength = length;
return length;
}
この中でInputfilterを使って、それからこれらのフィルタ条件の中で探して、あなたの望む条件を見つけてokになりました2このテキストボックスにパスワードを入力したい場合は、このような条件を追加します.
android:inputType="textPassword"
password=“true”を使わないで、outでは、プログラムでこの属性を取得したい場合はどう書けばいいのでしょうか.
このコードを見てください.どんな意味でも、簡単にはわかりません.きっとできます.
/**
* judge wether the editTextView's inputType is password or normal
*
**/
public boolean isPasswordType()
{
int inputType = this.getInputType();
final int variation =
inputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION);
return variation
== (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD)
|| variation
== (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD)
|| variation
== (EditorInfo.TYPE_CLASS_NUMBER | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD);
}
これで判断できます.この関数もtextViewで見つけました.