【问题标题】:How to force vertical scrollbar to show if AutoCompleteTextView results can scroll?如何强制垂直滚动条显示 AutoCompleteTextView 结果是否可以滚动?
【发布时间】:2014-07-02 18:39:39
【问题描述】:

我的应用程序中有一个 AutoCompleteTextView,我的任务是强制垂直滚动条始终显示由所述 textview 检索到的结果是否足够多以进行滚动(即有更多的结果无法容纳一次在自动创建的列表视图中)。

我尝试将以下 xml 属性添加到 AutoCompleteTextView 本身无济于事:

fadeScrollbars="false"
scrollbarFadeDuration="0"
scrollbarAlwaysDrawVertical="true"

我在想,如果我能以某种方式获得对自动为 AutoCompleteTextView 创建的列表视图的引用,并将上述一个或多个属性应用到它,我可以强制滚动条始终显示,但我不知道如何获得对该列表视图的引用。

谢谢

更新

在我为此 AutoCompleteTextView 创建的适配器中,在 Overridden getView() 方法中,我有对父视图的引用。我可以在父级上以编程方式设置这些属性,我得到了所需的功能,缺点是每次调用 getView 时都会设置这些属性,这不是最有效的吗?

【问题讨论】:

  • 对此有何进一步更新?我面临同样的问题,我可以确认您的 getView 解决方案有效。

标签: android scrollbar autocompletetextview


【解决方案1】:

我尝试了样式,但它们无法正常工作,因此您的编码方式似乎是唯一的可能性。 但是该组每次都会给出,因此您可以为此添加一个布尔值:

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 出现的阈值时才会出现这种情况。
猜你喜欢
  • 1970-01-01
  • 2014-09-02
  • 2010-11-26
  • 2011-11-21
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多