当AutoCompleteTextView有滚动条时,如何强制显示垂直滚动条?

7
我在我的应用程序中有一个AutoCompleteTextView,并且我的任务是强制垂直滚动条始终显示,如果该textview检索到的结果足够多而需要滚动(即有更多结果无法一次适合自动创建的列表视图中)。我已经尝试向AutoCompleteTextView本身添加以下xml属性,但未能成功:
fadeScrollbars="false"
scrollbarFadeDuration="0"
scrollbarAlwaysDrawVertical="true"

我在思考如何获得自动创建的AutoCompleteTextView列表视图的引用,并应用上述一个或多个属性,以强制显示滚动条,但我不知道如何获取对该列表视图的引用。谢谢。
更新:
在我为此AutoCompleteTextView创建的适配器中,在重写的getView()方法中,我有对父视图的引用。我可以在程序中对父视图设置上述属性,并获得所需的功能,缺点是每次调用getView时都会设置这些属性,这不是最有效的方法?

这个问题有进一步的更新吗?我也遇到了同样的问题,我可以确认你的getView解决方案可行。 - chris
1个回答

4

我尝试过使用样式表,但它们不能正常工作,所以您编码的方式似乎是唯一的可能性。 但组在每次给定时都会改变,因此您可以为此添加一个布尔值:

public View getView(int position, View convertView, ViewGroup parent) {
        //Change the list attr programmatically becuase sometimes Android sucks :/
        if (!_changedListAttr) {
            _changedListAttr = true;

            ListView list = (ListView) parent;
            list.setBackgroundResource(R.color.color_white);
            list.setVerticalScrollBarEnabled(false);
            list.setDividerHeight(0);
        }

这个解决方案的问题在于它只在下拉菜单(dd)第一次出现时起作用。当您删除字母并再次输入时,第二次它就不再起作用了。一个解决方法是在将项目添加到适配器时将布尔值设置为false,但即使如此,它也只能在重新构建dd时才能起作用。只有当字母计数低于导致dd出现的阈值时,才会出现这种情况。 - Bevor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接