---已解决问题- 在编辑文本中添加答案---
我在我的Android应用程序中使用ActionBar Sherlock
。我想要显示一个SearchView
,目前它运行良好,但是我意识到当我尝试自定义它时,我在做错什么。
我是这样创建的:
searchView.setQueryHint("Search: ");
searchView.setOnQueryTextListener(this);
searchView.setOnCloseListener(...);
searchMenuItem = menu.add("Search place");
searchMenuItem.setIcon(R.drawable.ic_action_search)
.setActionView(searchView)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
我希望能做两件事:
更改显示在文本字段中的“搜索”文本的颜色。看起来我已经用我的主题更改了它,但我希望可以以某种方式设置单独的颜色。
打开此搜索视图时,它出现在操作栏的左侧。但我需要它在右侧。图标(放大镜)实际上位于栏的右侧,但按下它后,EditText字段会在左侧打开。我尝试使用LayoutParams,但在将其添加到ActionBar时缺少一些关键内容。
所以希望有人能帮助我解决这个问题。
非常感谢, Tobias
----编辑----
好的,这样就解决了一件事。通过XML添加ActionBar可以使TextEdit靠右。
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
Log.e(TAG, "searchView: " + searchView);
而在我的menu.xml文件中
<item android:id="@+id/action_search"
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:actionViewClass="com.actionbarsherlock.widget.SearchView" />
所以至少解决了一个谜团(为什么这会有所不同)。但是,当调用
时,新创建的XML不再关闭。searchMenuItem.collapseActionView();
所以它仍然有些问题。
--- 编辑2 ---
只是想让你知道。我找到了文本颜色的解决方案。可以通过使用SearchView的AutoCompleteTextView来实现:
AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchText.setHintTextColor(getResources().getColor(R.color.white));
searchText.setTextColor(getResources().getColor(R.color.white));
我的最后一个问题是,当提交文本时,SearchView不再关闭。所以,collapseActionView()等方法都不起作用。有什么想法吗?
--- 编辑3 ---
好的,我找到了一个解决方案。我不知道这是否是正确的方法,但是当使用
((SearchView) searchMenuItem.getActionView()).setIconified(true);
它关闭EditText
。
我必须这样做两次,因为第一次只是"删除"我的输入文本并显示"提示",而第二次使用是"关闭"提示的EditText
并折叠搜索视图到放大镜。笨拙的风格但它有效。:-)