Vin*_*ier 20 android android-edittext
我希望看到maxLength一个EditText在运行时能够做出文本显示决定.
那可能吗?
这是对我不想做的事情的描述.
我有一个包含许多行的ListView,每行都有一个EditText和一个TextView.
我已经创建了ArrayAdapter的子类,以便能够提供我想要放在每行的EditText中的String.
我已经android:maxLength="12"在XML文件中设置了.
我想在EditText字段中显示一个数字,但如果我要显示的数字超过android:maxLength="12"我想要显示"错误消息".
我宁愿不在我的ArrayAdapter子类中硬编码12.
可能有一个简单的解决方案,但我还没有找到它.
(android第一次......)
Mar*_*yer 37
这应该工作:
Run Code Online (Sandbox Code Playgroud)editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(12) });
Sha*_*wat 34
只有有限的参数有吸气剂,所以我认为你不能读它.
因此在values文件夹中写入长度(Say 12)并在xml layout和arrayAdapter中使用它.现在它没有硬编码.
1)在值*中创建integer.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="integer" name="max_length">12</item>
</resources>
Run Code Online (Sandbox Code Playgroud)
2)在布局中
<TextView android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLength="@integer/max_length"
/>
Run Code Online (Sandbox Code Playgroud)
3)在ArrayAdapter中:
int maxLength = getResources().getInteger(R.integer.max_length);
Run Code Online (Sandbox Code Playgroud)
小智 10
从api 21你可以这样做:
for (InputFilter filter : mEditText.getFilters()) {
if (filter instanceof InputFilter.LengthFilter) {
((InputFilter.LengthFilter) filter).getMax());
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助别人.
小智 6
扩展编辑文本并从构造函数的属性集中检索值。
公共类MyEditText扩展了EditText {
public static final String XML_NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android";
private int mMaxLength;
public MyEditText(Context context) {
super(context, null);
}
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
mMaxLength = attrs.getAttributeIntValue(XML_NAMESPACE_ANDROID, "maxLength", -1);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
Kotlin 一行解决方案 - 返回最大长度,如果未设置则返回 null
view.filters.filterIsInstance<InputFilter.LengthFilter>().firstOrNull()?.max
Run Code Online (Sandbox Code Playgroud)
作为扩展:
val TextView.maxLength: Int?
get() = filters.filterIsInstance<InputFilter.LengthFilter>().firstOrNull()?.max
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22491 次 |
| 最近记录: |