Android NumberPicker在编辑文本时显示2个键盘

时间:2018-07-24 17:41:05

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

最初,数字选择器运行良好,但是一旦将其放在列表视图项中,便无法输入数字。选择它来编辑文本时,有时会弹出文本键盘,有时会弹出数字键盘。当按下数字时,您可以看到它正被按下,正在注册字母键盘。

在列表视图项中使用数字选择器是否可能会成为问题?

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

号码选择器列表项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侦听器。我认为这不会引起问题,但是我还是检查了一下。删除它仍然会出现问题。

1 个答案:

答案 0 :(得分:0)

似乎没有人对此有答案。我最终要做的是将NumberPicker从ListView项中取出,并用EditText替换它,这将打开一个其中包含NumberPicker的对话框。由于它不再是ListView项的一部分,因此可以完美地工作