删除 AutoCompleteTextView 弹出窗口的过度滚动效果 (Android Studio / Java / XML)

Remove overscroll effect on AutoCompleteTextView popup (Android Studio / Java / XML)

我目前正在尝试消除 AutoCompleteTextView 弹出窗口的过度滚动效果, 但是我尝试过的一切都没有用。我的 AutoCompleteTextView 使用一个 ArrayAdapter 来存储关键字和一个简单的布局来显示它的项目。

ArrayAdapter 的设置:

    String[] keywords = new String[] { "test", "test2", "test3", "test4", "test5" };
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, keywords);
    ((AutoCompleteTextView)findViewById(R.id.actvSearch)).setAdapter(adapter);

为了消除效果,我尝试设置了 AutoCompleteTextView 的 overScrollMode,但这似乎对弹出窗口没有任何影响。

是否有任何方法可以将弹出窗口的 overScrollMode 设置为“从不”或任何简单的(不覆盖 ArrayAdapter class)方法来限制一次显示的项目数量,以便连滚动效果都没有出现?

谢谢,Ypselon。

我找到了一个通过覆盖 getView() 方法来消除滚动效果的解决方案。所以在 getView() 方法中将这一行添加到父级:

parent.setOverScrollMode(View.OVER_SCROLL_NEVER);

您的适配器应该如下所示

 String[] keywords = new String[] { "test", "test2", "test3", "test4", "test5" };
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, keywords){
            @NonNull
            @Override
            public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                parent.setOverScrollMode(View.OVER_SCROLL_NEVER);
                return super.getView(position, convertView, parent);
            }
        };
 ((AutoCompleteTextView)findViewById(R.id.actvSearch)).setAdapter(adapter);

注意:每次滚动列表时都会调用parent.setOverScrollMode(View.OVER_SCROLL_NEVER);