Я хочу реализовать поиск со списком предложений. Обычно ширина выпадающего списка предложений выглядит так же, как и текстовая область поиска. видите, что ширина списка предложений больше, чем текстовая область поиска. Я попытался установить раскрывающуюся ширину с помощью autoCompleteTextView.setDropdownWidth(int) на какое-то значение, но это не сработало.
Как установить ширину раскрывающегося списка представления поиска, чтобы она соответствовала ширине текстовой области поиска в Android
Ответы (1)
Вы можете сделать что-то вроде этого, здесь мне нужно было заполнить раскрывающийся список по ширине экрана:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// inflate our menu
getMenuInflater().inflate(R.menu.search_menu, menu);
// find MenuItem and get SearchView from it
MenuItem searchMenuItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
final AutoCompleteTextView searchTextView = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
// get AutoCompleteTextView from SearchView
final AutoCompleteTextView searchEditText = (AutoCompleteTextView) searchView.findViewById(searchEditTextId);
final View dropDownAnchor = findViewById(searchTextView.getDropDownAnchor());
if (dropDownAnchor != null) {
dropDownAnchor.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
// calculate width of DropdownView
int point[] = new int[2];
dropDownAnchor.getLocationOnScreen(point);
// x coordinate of DropDownView
int dropDownPadding = point[0] + searchTextView.getDropDownHorizontalOffset();
Rect screenSize = new Rect();
getWindowManager().getDefaultDisplay().getRectSize(screenSize);
// screen width
int screenWidth = screenSize.width();
// set DropDownView width
searchTextView.setDropDownWidth(screenWidth - dropDownPadding * 2);
}
});
}
return super.onCreateOptionsMenu(menu);
}
Оригинальный ответ: https://stackoverflow.com/a/26344053/1959110
person
dumb_terminal
schedule
29.08.2016