我已经在SearchView中实现了ActionBar,其中我正在使用SimpleCursorAdapter设置带有一些随机数据的setSuggestionAdapter()
我面临的问题是,我无法让setDropDownWidth()处理SearchView的自定义AutoCompleteTextView。我可以改变背景资源和几乎所有的东西,除了水平偏移和下拉宽度。代码如下:

SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
searchAutoComplete.setDropDownAnchor(R.id.anchorView);
searchAutoComplete.setDropDownWidth(LinearLayout.LayoutParams.MATCH_PARENT);
searchAutoComplete.setDropDownBackgroundResource(R.drawable.white_bg);
searchAutoComplete.setMinimumWidth(AppUtil.getDeviceWidth(activityContext));

请帮帮我!我一直在测试的设备是Nexus4和棒棒糖。
编辑:
我很困惑为什么setDropDownHeight()可以工作,但是setDropDownWidth()不能工作,即使设置了一个int值(比如50)。下拉列表的宽度保持不变。我既不能减少也不能增加下拉列表的宽度。是AppCompat主题的ActionBar中的错误吗?
编辑2:
我能让这个方法起作用。我在锚定视图上使用了setDropDownWidth(),在View.onLayoutChangeListener内部方法中,我设置了下拉列表的宽度。现在工作正常了。我现在唯一的问题是为什么我们必须等待锚定视图的布局更改侦听器来设置下拉宽度?

最佳答案

来自文档
public void setDropDownWidth(整数宽度)
添加到API 3级
设置“自动完成”下拉列表的当前宽度。这可以是固定宽度,也可以匹配父级以填充屏幕,或者包装内容以适合其锚定视图的宽度
我也遇到了同样的问题,我认为这是因为它用d改变了当前值,所以每次调用textchangelistener时都需要调用它。

 auto.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    //    auto.setDropDownWidth(240);

    }

        @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub
             auto.setDropDownWidth(240);

    }

关于android - AutoCompleteTextView setDropDownWidth()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28605891/

10-09 04:05