gpt4 book ai didi

android - SearchView 结果列表宽度

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:47 25 4
gpt4 key购买 nike

有没有办法让SearchView的结果列表占据整个屏幕宽度?我试过为 SearchView 使用自定义布局,但这不会改变搜索结果列表的宽度。看截图:

enter image description here

最佳答案

是的,这是可能的。为此,我们应该设置整个 DropDownView 的宽度,而不仅仅是项目。我们可以通过调用AutoCompleteTextViewsetDropDownWidth来设置。但是有一个问题。每次更改边界时,DropDownView 的宽度和水平偏移都会在 SearchView 中计算。要获得解决方法,我们可以向 SearchView 添加我们自己的 OnLayoutChangeListener,我们在其中计算和设置 DropDownView 的高度。以下代码完全适用于 AppCompat:

@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();

// id of AutoCompleteTextView
int searchEditTextId = R.id.search_src_text; // for AppCompat

// get AutoCompleteTextView from SearchView
final AutoCompleteTextView searchEditText = (AutoCompleteTextView) searchView.findViewById(searchEditTextId);
final View dropDownAnchor = searchView.findViewById(searchEditText.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] + searchEditText.getDropDownHorizontalOffset();

Rect screenSize = new Rect();
getWindowManager().getDefaultDisplay().getRectSize(screenSize);
// screen width
int screenWidth = screenSize.width();

// set DropDownView width
searchEditText.setDropDownWidth(screenWidth - dropDownPadding * 2);
}
});
}

return super.onCreateOptionsMenu(menu);
}

如果您使用 Holo,只需将行 int searchEditTextId = R.id.search_src_text; 更改为以下行:

int searchEditTextId = getResources().getIdentifier("android:id/search_src_text", null, null);

关于android - SearchView 结果列表宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26299260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com