键盘问题,在代码中,inputType设置为number,但键盘显示的是带有多行的文本类型。问题仅显示在Android N(7.0)
中EditText位于Listview的标题内。在所有其他版本的android中它的工作完美。
View header = getLayoutInflater().inflate(R.layout.cardlist_footer, listView, false);
在此键盘焦点到达此editText时,焦点会跳转到页面中的第一个editText。它会阻止输入数字
<EditText
android:id="@+id/editCardNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight=".6"
android:background="@drawable/drawable_edittext_bg"
android:hint="xxxx-xxxx-xxxx-xxxx"
android:inputType="number"
android:maxLength="19"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white" />
在此editText中,InputType不起作用。在代码中,inputType设置为number,但键盘显示的是带有多行的文本类型
<EditText
android:id="@+id/editSearchZipCode"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@null"
android:gravity="center_vertical"
android:hint="Enter Zip"
android:imeOptions="actionSearch"
android:inputType="number"
android:maxLines="1"
android:textColor="@android:color/black"
android:textColorHint="#9c9c9c" />
答案 0 :(得分:1)
您可以添加 android:digits
如果设置,则指定此TextView具有数字输入方法和 这些特定字符是它将接受的字符。如果 这是设置,数字隐含为真。
android:inputType="number"
android:digits="0123456789"
修改强>
这是开发级 #BUG 。
选择帮助&gt;从Android Studio打开错误报告提交 反馈。这是启动bug的最简单方法,因为它填充了 与您的Android Studio版本,Java版本和 系统信息,我们需要正确地重现这个问题。
答案 1 :(得分:0)
更新时间:2017年11月6日17:52:19
<强> @deprecated 强> 在Android 7.1版本中有一些问题!
试试这个,使用它需要您自担风险。
/**
* 尝试性修复了在ListView里显示EditText InputType为 其它非text 类型时,弹出的软键盘会从数字键盘自动切换为 英文全键盘 的问题。
*/
class ListViewEx2 extends ListView
{
public ListViewEx2(final Context context)
{
super(context);
}
public ListViewEx2(final Context context, final AttributeSet attrs)
{
super(context, attrs);
}
public ListViewEx2(final Context context, final AttributeSet attrs, final int defStyleAttr)
{
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public ListViewEx2(final Context context, final AttributeSet attrs, final int defStyleAttr, final int defStyleRes)
{
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onLayout(final boolean changed, final int l, final int t, final int r, final int b)
{
//经过初步测试,只有在Android 7.0平台以上的系统才会出现软键盘自动切换的问题。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
{
//仅仅在 changed 为 true 时再调用,这样就可以避免了.
if (changed)
super.onLayout(changed, l, t, r, b);
}
else
super.onLayout(changed, l, t, r, b);
}
}