我希望在我的一个活动中在工具栏中有两个搜索视图:第一个用于查找感兴趣的位置,第二个用于按位置过滤。
searchViews将在彼此之上始终展开。最上面的一个会说“搜索”作为提示。最底层的人会说“附近”作为提示。在左边是主页按钮。
我提出了两种可能有效的方法,但我遇到了两种问题,我不知道如何解决它们。
第一个解决方案(当前)
这里我有一个线性布局,里面是android.support.v7.widget.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>`
的onCreate:
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的样式以使其正确对齐,但无法找到正确的方法。
我想知道是否有办法纠正我的任何方法以使其工作,或者是否有新的方法来设置这两个searchViews。感谢。
答案 0 :(得分:0)
我意识到当你为多个工具栏调用setSupportActionBar()时,onCreateOptionsMenu中的更改会影响添加的所有工具栏。为了解决这个问题,我只在我的顶部工具栏上调用了setSupportActionBar。对于底部工具栏,我调用了onCreate
toolbar2.inflateMenu(R.menu.search2);
SearchView searchViewBottom = (SearchView)findViewById(R.id.search_bottom);
searchViewBottom.onActionViewExpanded();
然后使用setOnMenuItemClickListener处理所有内部操作。