【问题标题】:Autocomplete TextView Suggestion List is behind Keyboard自动完成 TextView 建议列表在键盘后面
【发布时间】:2014-04-02 16:46:57
【问题描述】:

在寻找将建议列表显示在键盘前的解决方案时,我已经非常累了。

键盘后面还有更多建议。 当我通过将列表放在键盘前面触摸/滚动此列表时,我希望能够看到这些建议。 我检查了许多类似的问题,但没有任何希望有效地这样做。 在THIS QUESTION 上提出的建议并不能解决所有设备的问题。 我也见过THIS QUESTION,但并没有帮助解决问题。

有什么建议可以解决这个问题吗?

【问题讨论】:

  • 我从未见过开发人员必须在软键盘上放置这样的下拉菜单。我敢说不能/不应该尝试解决这个问题。您发布的第二个问题链接的第二个答案似乎是最好的方法(在软键盘自动完成中显示选项)。

标签: android autocomplete keyboard autocompletetextview


【解决方案1】:

这是由于布局问题。基本上你的键盘有焦点,因为用户正在写,但你想显示下拉列表。但是,如果您看到下拉列表,您将看不到键盘,并且用户每次想要继续书写时都必须关注EditText。所以基本上你看到的行为是正确的 IMO。

你有两个选择:

1) 更改您的布局,使帮助中心从屏幕顶部显示,并有足够的高度显示所有建议。

2) 限制显示的下拉项目。由于没有实现此目的的本地方法,因为没有 maximumSuggestions 选项,您可以获取其中一行的高度并将其乘以 X 倍(即 X 要显示的行数)并使用 setDropDownHeight() 设置其高度。有关此here 的更多信息。

【讨论】:

  • 如果我们一个接一个地垂直有 10 个 EditText,那么您的方法 1 将不是解决方案。并且方法 2 仍然会在键盘下方显示建议列表。
【解决方案2】:
public View getView(final int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    ViewHolder holder;
    if (convertView == null) {
        convertView = inflater.inflate(viewResourceId, parent, false);
        holder = new ViewHolder();
        init(convertView, holder);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    convertView.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                InputMethodManager imm = (InputMethodManager) getContext()
                        .getSystemService(
                                Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(
                        searchView.getWindowToken(), 0);
            }

            return false;
        }
    });

    setView(position, holder);
    return convertView;
}

【讨论】:

  • 您应该在代码中提供解释并确保其格式正确...
  • 解释在哪里?
猜你喜欢
  • 2016-08-26
  • 1970-01-01
  • 2011-08-24
  • 2023-02-18
  • 1970-01-01
  • 2014-11-26
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多