【问题标题】:Android ListView with EditText Scroll Issue带有 EditText 滚动问题的 Android ListView
【发布时间】:2014-10-09 16:02:24
【问题描述】:

我有一个 ListActivity,其中包含带有 EditText 的列表项。

当列表中有很多项目时(比如 ~25 个)并且在给定时间只有 7 个可见。 当我点击一个项目时,我希望键盘显示“下一步”并滚动 1 - 25。 但最终发生的是,我将在第 6 项之前获得“下一个”,在第 7 项上获得“完成”。所以,基本上只在可见行上显示。 注意:如果我要在editText上设置“inputType”,我会自动获得“Next”而不设置imeoption(可能是它的错误或功能:))

这是我在 AndroidManifest.xml 中所做的,因此视图会调整以显示光标并自动滚动列表。

<activity
        ...
        android:windowSoftInputMode="adjustUnspecified|adjustPan">

在 Activity onCreate 中,我将 Focusable 设置为 false,以便 editText 而不是 listview 本身获得焦点。

ListView listView = getListView();
listView.setFocusable(false);

在适配器类中我设置了editText的inputType。这样做会给我“Next”而不是“Enter”。

EditText editText = (EditText) view.findViewById(R.id.data_text);
editText.setText(getItem(position));
editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);

我已经通过“SO”和谷歌搜索,我还没有找到任何线索。

编辑: 这是我的适配器类

class ItemAdapter extends ArrayAdapter<String> {

    public ItemAdapter(Context context, int resource) {
        super(context, resource);
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        View view = convertView;

        if (view == null) {
            LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.list_item, parent, false);
        }

        final EditText editText = (EditText) view.findViewById(R.id.input_text );
        String data = getItem(position);
        editText.setText(data);

        editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);

        return view;
    }
}

【问题讨论】:

  • 这在很大程度上取决于按钮的 onClick 方法,可能会受到适配器设计的影响。
  • 让列表视图在“下一个”处向上滚动一个项目,这样“正在编辑”的 EditText 始终位于屏幕中间。
  • 澄清一下,问题是,当我在列表视图中使用 imeoption 的 Next 编辑文本时,它只会滚动可见行。所以,如果我有 25 个项目,当应用程序启动时,列表视图将显示 1 到 7,(我将不得不查看更多数据.. 7-14.. 等等)。问题是,当我使用显示 1-7 的列表来统计应用程序时,如果我点击“下一步”,它会在键盘上滚动到第 2 项,然后是 3 .. 但是如果我点击下一步,它会在 7 处返回到 1 而不是去 8.
  • 你可能想试试这个:stackoverflow.com/questions/21935312/…

标签: android listview android-listview android-keypad android-input-method


【解决方案1】:

尝试在您的EditText 中设置android:imeOptions="actionNext"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多