【问题标题】:Put SearchView on the right of back button icon将 SearchView 放在后退按钮图标的右侧
【发布时间】:2017-09-20 22:40:05
【问题描述】:

所以我正在实现SearchView,现在我在布局中有两个项目。后退按钮和搜索视图。

我想知道如何确保后退按钮出现在搜索视图之前的屏幕左侧,而不是相反。

这是布局文件:

<?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/back_btn"
        android:title="@string/search"
        app:icon="@drawable/ic_action_back_black"
        android:icon="@drawable/ic_action_back_black"
        app:showAsAction="ifRoom|collapseActionView"/>

    <item android:id="@+id/search"
        android:title="@string/search"
        app:icon="@drawable/ic_search_black_24dp"
        android:icon="@drawable/ic_search_black_24dp"
        app:showAsAction="ifRoom|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"/>

</menu>

我尝试将后退按钮放在搜索视图之前,在我点击搜索框之前它工作正常。

搜索视图展开,后退按钮保持在屏幕右侧。

问题:有没有办法确保即使搜索框展开,后退按钮也会保持在左侧?

这是我正在使用的工具栏:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/PopupMenuStyle"
    android:id="@+id/my_awesome_toolbar"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/actionBarSize"
    app:titleTextColor="@android:color/black"
    android:layout_alignParentTop="true"
    android:gravity="right"
    android:elevation="5dp">

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

【问题讨论】:

  • 你为什么要用这么复杂的结构?

标签: android toolbar searchview


【解决方案1】:

希望这会对某人有所帮助

  • 首先,确保您的活动没有 ActionBar
 <item name="windowActionBar">false</item>
  • 其次,将此代码添加到您的 .xml 中
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout
        android:id="@+id/my_appbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:padding="@dimen/margin_small">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <android.support.v7.widget.Toolbar
                android:id="@+id/my_toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="-9dp"
                android:layout_weight="6" />

            <android.support.v7.widget.SearchView
                android:id="@+id/my_search_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/md_white_1000"
                android:clickable="true"
                android:focusable="true"
                android:iconifiedByDefault="false" />
        </LinearLayout>

    </android.support.design.widget.AppBarLayout>
  • 最后,以编程方式设置后退箭头

Display Back Arrow on Toolbar

【讨论】:

    【解决方案2】:

    在搜索视图标签内添加此属性android:maxWidth

    【讨论】:

    • 感谢您的回答。不幸的是,它没有用。后退按钮仍在屏幕右侧。
    • 我更新了我的答案再试一次 :) 如果您使用工具栏,这将起作用
    • 我刚刚用工具栏的代码更新了我的问题。
    • 试试我最后的建议 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2016-06-12
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多