【问题标题】:Put Search View Widget to the Right corner in Toolbar将搜索视图小部件放在工具栏的右上角
【发布时间】:2018-08-16 13:18:05
【问题描述】:

我想将搜索小部件放在工具栏的右上角,然后按下它以一直向左打开。但万一搜索视图超出屏幕。

有什么想法吗?

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

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.SearchView
                android:layout_width="47dp"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                app:barrierDirection="left"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent">

            </android.support.v7.widget.SearchView>
        </android.support.constraint.ConstraintLayout>
    </android.support.v7.widget.Toolbar>

【问题讨论】:

  • 删除&lt;ConstraintLayout&gt;,以及&lt;SearchView&gt;中的属性,并将layout_gravity="right|end"添加到&lt;SearchView&gt;中。
  • 哦,将其 layout_width 更改为 wrap_content。它会自行调整宽度。这可能一直是问题的根源,但ConstraintLayout 是不必要的。

标签: android android-toolbar searchview android-search


【解决方案1】:

显示搜索图标+将其扩展到搜索编辑文本的最简单方法是使用菜单项:

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

然后在onCreateOptionsMenu 执行你的逻辑

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.transcation_filter, menu);
        // Associate searchable configuration with the SearchView
        SearchManager searchManager =
                (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView =
                (SearchView) menu.findItem(R.id.search).getActionView();
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getActivity().getComponentName()));

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                mViewModel.filter(newText);
                return false;
            }
        });
        super.onCreateOptionsMenu(menu, inflater);
    }

折叠的搜索看起来像

并展开

【讨论】:

  • 此方法在展开时向左插入一个箭头。我不想要那个
  • @Nick 稍微修改了示例,在菜单中搜索并不意味着您需要返回按钮
  • 再次,当您按下搜索按钮时,小部件会展开,小部件左侧会出现一个箭头,以便将搜索视图折叠为其初始形式。我不想要左边的箭头。该方法默认放置箭头
猜你喜欢
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2017-08-16
  • 2015-09-17
  • 1970-01-01
  • 2016-10-28
相关资源
最近更新 更多