【发布时间】:2016-04-13 19:57:00
【问题描述】:
我想在我的一个活动的工具栏中有两个搜索视图:第一个用于查找感兴趣的地方,第二个用于按位置过滤。
searchViews 将在彼此之上始终展开。最上面的会说“搜索”作为提示。底部的会说“附近”作为提示。左边是主页按钮。
我想出了两种可能可行的方法,但我都遇到了问题,我不知道如何解决。
第一个解决方案(当前)
这里我有一个线性布局,里面是一个 android.support.v7.widget.Toolbar、一个视图,然后是第二个 Toolbar。
这基本上是我希望它看起来的样子,但问题是更改 onCreateOptionsMenu 中的提示文本会更改两个提示。我希望顶部说“搜索”,底部说“附近”。似乎因为有两个工具栏,所以 onCreateOptionsMenu 会影响它们。
代码:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/search_container"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/search_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar">
</android.support.v7.widget.Toolbar>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="72dp"
android:background="#90909090"/>
<android.support.v7.widget.Toolbar
android:id="@+id/search_toolbar2"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
app:contentInsetStart="56dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar">
</android.support.v7.widget.Toolbar>
<include
layout="@layout/toolbar_action_bar_shadow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"/>
</LinearLayout>`
创建:
Toolbar toolbar2 = (Toolbar) findViewById(R.id.search_toolbar2);
setSupportActionBar(toolbar2);
Toolbar toolbar = (Toolbar) findViewById(R.id.search_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayShowTitleEnabled(false);
OnCreateOptionsMenu:
SearchView searchViewTop = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id
.search_top));
SearchManager searchManager1 = (SearchManager) getActivity().getSystemService(Context
.SEARCH_SERVICE);
searchViewTop.setSearchableInfo(searchManager1.getSearchableInfo(getActivity()
.getComponentName()));
searchViewTop.setIconified(false);
searchViewTop.onActionViewExpanded();
searchViewTop.setQueryHint("Nearby");
第二个解决方案(旧)
第二种方法是在 xml 文件中放置一个 searchView 而不是第二个工具栏。尽管第二个搜索视图不在工具栏内,但可以使其看起来像它。我遇到的问题是不在工具栏内的 searchView 看起来与工具栏内的 searchView 和我想要的不同。当不在工具栏内时,提示文本将进一步向右对齐,而不是直接在顶部提示文本下方。但是,在搜索视图中输入的任何新文本都将正确对齐。我尝试自定义搜索视图的样式以正确对齐,但找不到正确的方法。
我想知道是否有一种方法可以纠正我的任何一种方法以使其正常工作,或者是否有一种新方法来设置这两个 searchView。谢谢。
【问题讨论】:
标签: android android-toolbar searchview android-search