Android工具栏searchView太宽,无法移动其他项目

时间:2017-01-15 14:43:14

标签: android android-toolbar searchview

SearchView始终展开会将其他项目移出屏幕,但如果设置app:showAsAction="always|collapseActionView"则会正常。

我想构建一个类似Facebook应用的toolbar

有两个条件:

  1. 三项:searchView&其他两项
  2. 继续扩展
  3. 我做过两件事,但物品位置不正确。 problem position

    这是正确的位置(但我希望它保持扩展): correct position

    这是我的代码:

    布局

    <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>
    

    菜单

    <?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;
    }
    

1 个答案:

答案 0 :(得分:1)

使用searchView.setMaxWidth(400)。