【问题标题】:Is it possible to left align SearchView in AppCompat 21 with toolbar?是否可以将 AppCompat 21 中的 SearchView 与工具栏左对齐?
【发布时间】:2015-03-05 03:24:00
【问题描述】:

我想在使用新材料主题和 AppCompat 21 时将平板电脑上的 SearchView 左对齐。这可能吗,还是必须将我自己的自定义布局添加到工具栏?

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_search, menu);
    mnuSearch = menu.findItem(R.id.menu_search);
    android.support.v7.widget.SearchView searchView = (SearchView) MenuItemCompat.getActionView(mnuSearch);
    searchView.setGravity(Gravity.LEFT);
    searchView.setIconifiedByDefault(false);
    searchView.setQueryHint(getString(R.string.search));
    searchView.requestFocus();
    return true;
}

【问题讨论】:

  • 非常好的问题哥们我猜在你的xml工具栏的正文中你可以使用图像视图设置图标你可以试试这个

标签: android android-appcompat searchview material-design


【解决方案1】:

我用的是搜索视图

<android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay" >

            <android.support.v7.widget.SearchView
                android:id="@+id/search"
                android:gravity="start"
                app:searchIcon="@mipmap/icon_search"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>


            <TextView
                android:gravity="end"
                android:textSize="22dp"
                android:textColor="@color/white"
                android:id="@+id/title"
                android:text="title"
                android:layout_marginRight="10dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </android.support.v7.widget.Toolbar>

【讨论】:

    【解决方案2】:

    我宁愿在布局中定义你的SearchView,然后调用

    View v = findViewById(R.id.your_search_view);
    getSupportActionBar().setCustomView(v);
    

    这样它就已经在左边对齐了,如果没有,你可以设置它的LayoutParams

    如果您将 Toolbar 与 AppCompat 一起使用,事情会更容易,因为它充当 ViewGroup

    <android.support.v7.widget.Toolbar
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:abc="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            android:layout_height="?attr/actionBarSize"
            android:layout_width="match_parent">
    
        <your.SearchView />
            // here you have control over layout_gravity
    
    </android.support.v7.widget.Toolbar>
    

    【讨论】:

    • 谢谢,会这样做。曾希望有一个简单的修复,但我想这很容易:-)