2016-06-01 26 views
0

我想用建议列表实现searchview。 通常情况下,建议列表的下拉宽度显示为与searchview文本区域相同。但是当我在AndroidManifest.xml中将以下属性设置为应用程序标签时:android:theme =“@ android:style/Theme.Black.NoTitleBar.Fullscreen” ,我发现建议列表宽度显示的大于searchview文本区域。 我试图将autoCompleteTextView.setDropdownWidth(int)的dropdownwidth设置为某​​个值,但没有奏效。如何设置搜索视图的下拉宽度以匹配搜索文本区域的宽度android

enter image description here

回答

0

你可以做这样的事,在这里我需要填充下拉屏幕宽度:

@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