Android NumberPicker показывает 2 клавиатуры при редактировании текста

Первоначально средство выбора номера работало отлично, но как только я поместил его в элемент списка, я не смог ввести числа. Когда вы выбираете его для редактирования текста, он иногда вызывает текстовую клавиатуру, а иногда цифровую клавиатуру. При нажатии цифр вы можете видеть, что при регистрации буквенной клавиатуры нажимается за ней.

Может ли это быть проблемой с наличием средства выбора номера в элементе списка?

Я попытался изменить несколько атрибутов, касающихся фокуса и изменения типа ввода самого текста редактирования (который действительно по умолчанию установлен на номер правильно), но безуспешно.

Элемент списка выбора номера 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 ответ

Решение

Кажется, что никто не имеет ответа на это. В итоге я вынул NumberPicker из элемента ListView и заменил его на EditText, открывший диалоговое окно с NumberPicker. Он работает отлично, так как он больше не является частью элемента ListView

Другие вопросы по тегам