2017-01-15 2 views
2

SearchView immer erweitert wird andere Elemente aus dem Bildschirm verschieben, aber wenn app:showAsAction="always|collapseActionView" gesetzt wird es normal sein.Android Toolbar searchView zu breit, um andere Objekte zu verschieben

Ich möchte eine toolbar wie Facebook App bauen.

Es gibt zwei Bedingungen:

  1. Drei Artikel: searchView & anderen beiden Elemente
  2. Halten
  3. erweitert

ich beides getan hatte, aber die Gegenstände nicht in die richtige Position. problem position

Dies ist richtige Position (aber ich will es gespreizte halten): correct position

Hier ist mein Code:

Layout

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:elevation="2dp" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:titleTextColor="@android:color/white" /> 
</android.support.design.widget.AppBarLayout> 

Menü

<?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:icon="@android:drawable/ic_menu_search" 
     android:title="@string/tool_search_hint" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always" /> 
    <item 
     android:id="@+id/action_settings" 
     android:title="@string/tool_settings" 
     android:orderInCategory="200" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_user" 
     android:icon="@drawable/ic_user" 
     android:title="@string/tool_user" 
     android:orderInCategory="100" 
     app:showAsAction="always" /> 
</menu> 

java

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.toolbar_actions, menu); 

    MenuItem menuSearchItem = menu.findItem(R.id.action_search); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menuSearchItem.getActionView(); 

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

    searchView.setIconifiedByDefault(false); 

    return true; 
} 

Antwort

0

Verwenden Sie searchView.setMaxWidth (400).

Verwandte Themen