我已经autocompletetextview
在工具栏内设置了。当用户提供搜索查询时,我有一个适配器(添加了一些用于测试的虚拟数据),可以显示基于搜索查询的结果。
问题是适配器宽度设置为autocompletetextview
宽度。但是在这里,我希望将适配器宽度设置为工具栏宽度,以及工具栏和适配器之间的边距。
这是我写的代码:
searchView = (AutoCompleteTextView) findViewById(R.id.searchView); SearchAdapter searchAdapter = new SearchAdapter(NavigationDrawerActivity.this,searchResults,searchView); searchView.setAdapter(searchAdapter);
这是我的适配器:
public class SearchAdapter extends ArrayAdapter{ private boolean mAnimate; private AutoCompleteTextView mSearch; public SearchAdapter(Context context, List options, AutoCompleteTextView search) { super(context, 0, options); mSearch = search; } int count = 0; @Override public View getView(int position, View convertView, ViewGroup parent) { SearchResult option = getItem(position); if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate( R.layout.search_option, parent, false); /* if (true) { Animation anim = AnimationUtils.loadAnimation(getContext(), R.anim.anim_down); anim.setDuration(400); convertView.startAnimation(anim); if (count == this.getCount()) { mAnimate = false; } count++; }*/ } View border = convertView.findViewById(R.id.border); if (position == 0) { border.setVisibility(View.VISIBLE); } else { border.setVisibility(View.GONE); } final TextView title = (TextView) convertView .findViewById(R.id.title); title.setText(option.title); ImageView icon = (ImageView) convertView.findViewById(R.id.icon); icon.setImageDrawable(option.icon); ImageView up = (ImageView) convertView.findViewById(R.id.up); up.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mSearch.setText(title.getText().toString()); mSearch.setSelection(mSearch.getText().length()); } }); return convertView; } }
这是我的适配器行布局:
有了上面的代码,我将变成这样: 需要将适配器对齐到工具栏宽度, 我尝试这样设置适配器宽度:
Rect screenSize = new Rect(); getWindowManager().getDefaultDisplay().getRectSize(screenSize); // screen width int screenWidth = screenSize.width(); int adapterMargin = (int)getResources().getDimension(R.dimen.adapter_margin); searchView.setDropDownWidth(screenWidth - adapterMargin);
但是这里的问题是我无法获得正确的页边距,如下所示: 设置了适配器宽度的屏幕
请帮助我解决该问题。
看起来您想将适配器宽度设置为工具栏宽度,将以下行添加到代码中即可使用:
searchView.setDropDownAnchor(toolbar.getId());
如果您还有其他疑问,请在下面评论