如何将SearchView的搜索图标移到右侧?

meu*_*orn 21 android android-layout searchview material-design

在此输入图像描述

这是我的布局,使用android.support.v7.widget.SearchView.我想将搜索图标移到右侧,但我还没有找到任何方法......`

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways|snap"
        app:popupTheme="@style/AppTheme.PopupOverlay">

        <android.support.v7.widget.SearchView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_main_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

`

单击图标后,它将更改为此布局 在此输入图像描述

Adi*_*han 21

你可以通过编程方式完成

SearchView search = (SearchView) item.getActionView();
    search.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT)); 
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答,但没有用。它触发了此异常:ClassCastException:android.app.ActionBar $ LayoutParams无法转换为android.support.constraint.ConstraintLayout $ LayoutParams。 (2认同)

小智 11

您可以在menu.xml中添加搜索操作,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <item
        android:id="@+id/action_search"
        android:icon="@mipmap/ic_search_white_24dp"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom|collapseActionView" />
    <item android:id="@+id/action_download"
        android:title="@string/menu_action_download"
        android:icon="@mipmap/ic_file_download_white_24dp"
        android:orderInCategory="100"
        app:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)

正常的样子 坍塌的样子


Moh*_*med 9

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:layout_scrollFlags="scroll|enterAlways|snap"
    app:popupTheme="@style/AppTheme.PopupOverlay">

    <RelativeLayout
       android:id="@+id/not"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
                        >
    <android.support.v7.widget.SearchView
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>

<android.support.design.widget.TabLayout
    android:id="@+id/tab_main_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)


j2e*_*nue 7

you could try the layoutdirection. set it to "rtl"

android:layoutDirection="rtl" in your searchview xml:

<android.support.v7.widget.SearchView
                        android:id="@+id/searchView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_marginRight="11.4dp"
                        app:iconifiedByDefault="true"
                        android:animateLayoutChanges="true"
                        app:queryHint="@string/search_hint"
                        app:queryBackground="@android:color/transparent"
                        app:searchHintIcon="@drawable/empty_drawable"
                        app:closeIcon="@drawable/close_x_icon"
                        **android:layoutDirection="rtl"**
                        app:searchIcon="@drawable/magnifying_glass"
                        />
Run Code Online (Sandbox Code Playgroud)

dont forget to put this in your manifest application tag:

 android:supportsRtl="true"
Run Code Online (Sandbox Code Playgroud)


小智 5

android:layoutDirection="rtl"这对我有用。