【问题标题】:Android NumberPicker shows 2 keyboards when editing textAndroid NumberPicker 在编辑文本时显示 2 个键盘
【发布时间】:2018-07-24 17:41:04
【问题描述】:

最初数字选择器工作得很好,但是一旦我把它放在一个列表视图项目中,我就无法输入数字。当您选择它来编辑文本时,它有时会弹出一个文本键盘,有时会弹出一个数字键盘。按下数字时,您可以看到它正在注册字母键盘正在其后面按下。

这可能是在列表视图项中使用数字选择器的问题吗?

我尝试更改几个关于焦点的属性并更改编辑文本本身的输入类型(默认情况下确实设置为正确的数字)并且没有运气。

数字选择器列表项 xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <NumberPicker
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="32dp" />
    <TextView
        android:id="@+id/minutesText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_toEndOf="@+id/timePicker"
        android:layout_centerVertical="true"
        android:text="@string/test"
        android:textColor="@android:color/white"
        android:textSize="14sp" />
</RelativeLayout>

然后在列表视图的适配器中使用它来获取数字选择器项:

private View getNumberPickerView(int position, View convertView, ViewGroup parent) {
        NumberPickerViewHolder holder;

        if (convertView == null) {
            convertView = mInflator.inflate(R.layout.number_picker_list_item, parent,false);

            holder = new NumberPickerViewHolder();
            holder.numberPicker = (NumberPicker) convertView.findViewById(R.id.timePicker);
            holder.minutesText = (TextView) convertView.findViewById(R.id.minutesText);
            convertView.setTag(holder);
        }

        else {
            holder = (NumberPickerViewHolder) convertView.getTag();
        }

        if (position == mNumberPickerPos) {
            holder.numberPicker.setMinValue(0);
            holder.numberPicker.setMaxValue(300);

            holder.minutesText.setText(R.string.test);
        }
    return convertView;
}

NumberPickerViewHolder 只是一个内部类,用于重用列表视图项。

编辑:我还有一个用于数字选择器的 onValueChange 侦听器。我不认为这会导致问题,但我还是检查了。删除后问题仍然存在。

【问题讨论】:

  • 你是否同时使用EditText
  • @Benjamin Nope,只是一些文本视图
  • 你能分享更多代码吗?喜欢你的活动和完整的布局文件
  • @Benjamin 刚刚添加了数字选择器列表项的完整 xml 以及用于获取数字选择器视图的方法

标签: android android-studio listview android-number-picker


【解决方案1】:

似乎没有人对此有答案。我最终做的是从 ListView 项目中取出 NumberPicker 并将其替换为 EditText,该 EditText 打开一个对话框,其中包含 NumberPicker。它工作得很好,因为它不再是 ListView 项目的一部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2019-01-12
    • 2014-03-19
    • 1970-01-01
    相关资源
    最近更新 更多