【问题标题】:When i focus on edit text with numeric input type, standart qwerty keyboard pops up当我专注于使用数字输入类型编辑文本时,会弹出标准 qwerty 键盘
【发布时间】:2013-03-31 18:58:05
【问题描述】:

我已经像这样设置了我的EditText 字段:

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

当我点击Edittext 时,会出现正确的数字输入键盘,但随后会立即被标准键盘取代。如果我再次单击,则会出现数字键盘,并且不会被标准键盘取代。这发生在动态生成的ListView 中,如果这会影响任何东西,并且在模拟器和手机中都会发生(三星 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>

【问题讨论】:

  • 我注意到 Android 不喜欢在 ListView 行中包含 EditText。如果您可以重新设计程序以单独使用 EditText(例如,单击 ListView 行并在对话框中获取 EditText)它应该可以工作。

标签: android android-edittext numeric-keypad


【解决方案1】:

这类问题很烦人。简短的故事是,默认情况下,ListView 仅用于显示项目,并可选择选择它们。

ListView 不假定它的孩子是可聚焦的,它自己处理焦点并触发适当的监听器。当您开始将可聚焦的小部件放入 ListView 时,事情很快就会变得疯狂。贴出实际代码,您将有更多机会获得帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2019-08-01
    • 2018-07-29
    • 2018-09-22
    • 2021-11-11
    • 2016-12-05
    相关资源
    最近更新 更多