Когда я сосредотачиваюсь на редактировании текста с числовым типом ввода, появляется стандартная клавиатура qwerty

Я установил мой EditText поле как это:

   <EditText
        android:inputType="number"
        android:layout_width="130dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText" android:layout_gravity="center"
        />

Когда я нажимаю на это EdittextПравильная числовая клавиатура ввода появляется, но затем немедленно заменяется стандартной клавиатурой. Если я нажму еще раз, появится цифровая клавиатура и не будет заменена стандартной клавиатурой. Это происходит в динамически генерируемых ListView, если это влияет на что-нибудь, и происходит как в эмуляторе, так и в телефоне (Samsung Galaxy Note). Как я могу предотвратить появление стандартной клавиатуры?

Вот фактический код:

public class Delivery extends Activity {
ListView deliveryTipes;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.delivery_main);
    deliveryTipes=(ListView) findViewById(R.id.tasksID);
    String[] deliveryTipesList = getResources().getStringArray(R.array.tasks);
    deliveryTipes.setAdapter(new ArrayAdapter<String>(this, R.layout.delivery_line,R.id.taskName, deliveryTipesList));
}

}

delivery_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tasksID" android:layout_gravity="center" android:padding="10dp"/>
</LinearLayout>

delivery_line.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="10dp">

<TextView
        android:layout_width="130dp"
        android:layout_height="wrap_content"
        android:text="Task Name"
        android:id="@+id/taskName" android:layout_gravity="left|center_vertical" android:textStyle="bold"/>
<Space
        android:layout_width="50dp"
        android:layout_height="fill_parent"
        android:id="@+id/space"/>
<EditText

        android:inputType="number"
        android:layout_width="130dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText" android:layout_gravity="center"
        />
</LinearLayout>

1 ответ

Решение

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

ListView не предполагает, что его дочерние элементы являются фокусируемыми, он сам обрабатывает фокус и вызывает соответствующих слушателей. Когда вы начинаете помещать фокусируемые виджеты в ListViewСкоро все станет диким. Разместите реальный код, и у вас будет больше шансов получить помощь.

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