Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置搜索视图下拉列表的宽度以匹配android中搜索文本区域的宽度_Android_Dropdown_Searchview - Fatal编程技术网

如何设置搜索视图下拉列表的宽度以匹配android中搜索文本区域的宽度

如何设置搜索视图下拉列表的宽度以匹配android中搜索文本区域的宽度,android,dropdown,searchview,Android,Dropdown,Searchview,我想用建议列表实现searchview。 通常,建议列表下拉列表的宽度与searchview文本区域的宽度相同 android:theme=“@android:style/theme.Black.NoTitleBar.Fullscreen”到应用程序标记,我看到建议列表的宽度似乎大于searchview文本区域。 我试着用autoCompleteTextView设置dropdownwidth.setDropdownWidth(int)为某个值,但不起作用 您可以这样做,这里我需要用下拉列表填充屏

我想用建议列表实现searchview。 通常,建议列表下拉列表的宽度与searchview文本区域的宽度相同 android:theme=“@android:style/theme.Black.NoTitleBar.Fullscreen”到应用程序标记,我看到建议列表的宽度似乎大于searchview文本区域。 我试着用autoCompleteTextView设置dropdownwidth.setDropdownWidth(int)为某个值,但不起作用


您可以这样做,这里我需要用下拉列表填充屏幕宽度:

@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);
}
原始答复:

您可以这样做,这里我需要用下拉列表填充屏幕宽度:

@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);
}
原始答复: