2015-07-16 3 views
11

У меня есть следующий результат:SearchView не расширяет всю ширину

enter image description here

menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     android:actionLayout="@layout/my_search_view" 
     android:icon="@android:drawable/ic_menu_search" 
     android:title="Search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always|collapseActionView"/> 

</menu> 

my_search_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<SearchView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:maxWidth="10000dp"/> 

активность

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.menu, menu); 
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
    searchView.setQueryHint("Поиск"); 
    searchView.setOnQueryTextListener(this); 


    // Get the SearchView and set the searchable configuration 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 


    ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT); 
    searchView.setLayoutParams(params); 
    searchView.setIconified(false); 

    MenuItemCompat.expandActionView(searchItem); 
    return super.onCreateOptionsMenu(menu); 
} 

Я хочу, что X (закрыть действие) будет расположен на правой части экрана.

+0

Какова цель андроида: maxWidth = "10000dp"? –

+0

@AlexiosKarapetsas - попытка, связанная с http://stackoverflow.com/a/23451789/2956344 –

+0

Возможный дубликат [SearchView в OptionsMenu не в полной ширине] (http://stackoverflow.com/questions/18063103/searchview-in- optionsmenu-не-полная ширина) – Benjamin

ответ

0

У меня была такая же проблема. Searchview не полностью расширялся. Вот как я решил проблему

в моем styles.xml я определил стиль для SearchView

<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView"> 
    <item name="queryBackground">@color/light_gray_3</item> 
    <item name="submitBackground">@color/gray</item> 
    <item name="closeIcon">@android:drawable/ic_menu_close_clear_cancel</item> 
    <item name="goIcon">@drawable/abc_ic_go_search_api_mtrl_alpha</item> 
    <item name="searchHintIcon">@null</item> 
    <item name="android:maxWidth">1000dp</item> 
</style> 

то в моем стиле для панели инструментов я добавил строку стилизовать SearchView

<style name="ThemeToolbar" parent="Theme.AppCompat.Light"> 
    <item name="colorControlNormal">@color/gray</item> 
    <item name="colorPrimary">@android:color/white</item> 
    <item name="android:textColorSecondary">@color/gray</item> 
    <item name="searchViewStyle">@style/MySearchViewStyle</item> 
</style> 

Вот мой макет SearchView определен в search_view_layout.xml

<android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res/rk.chkout" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
app:searchHintIcon="@null" 
android:maxWidth="10000dp" /> 

и декларация поиска элемента в menu.xml

<item 
    android:orderInCategory="2" 
    android:id="@+id/action_search" 
    android:icon="@drawable/search_icon" 
    android:title="@string/search" 
    app:actionLayout="@layout/search_view_layout" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    app:showAsAction="always|collapseActionView"/> 
22

SearchView MenuItemCompat имеет свойство с именем MaxWidth. Следующее делает трюк:

searchView.setMaxWidth(Integer.MAX_VALUE); 
Смежные вопросы