Java Android如何在用户单击工具栏时打开searchview
我想在用户单击工具栏时打开searchview。我该怎么做Java Android如何在用户单击工具栏时打开searchview,java,android,searchview,Java,Android,Searchview,我想在用户单击工具栏时打开searchview。我该怎么做 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar_items,menu); MenuItem item = menu.findItem(R.id.action_search); searchView = (SearchView) item.getActionView
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_items,menu);
MenuItem item = menu.findItem(R.id.action_search);
searchView = (SearchView) item.getActionView();
((EditText) searchView.findViewById(R.id.search_src_text)).setHintTextColor(getResources().getColor(R.color.searchHint));
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu);
}
为句柄单击重写此方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.search:
openSearch();
return false;
}
return super.onOptionsItemSelected(item);
}
将collapseActionView值添加到app:showAsAction属性,以确保菜单项使用指定的可折叠操作视图 在Menu.xml中添加此 app:actionViewClass=“android.support.v7.widget.SearchView” 然后呢 MenuItem searchItem=menu.findItem(R.id.action\u search); SearchView SearchView=(SearchView)searchItem.getActionView() 大宗报价
所以基本上,我在我这边实现了整个过程,并且它正在工作。记住,小部件应该来自AndroidX 主要活动
class MainActivity : AppCompatActivity() {
private var searchView: SearchView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<Button>(R.id.btnClickListener).setOnClickListener {
searchView?.onActionViewExpanded()
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.search, menu)
searchView = (menu.findItem(R.id.search).actionView as SearchView)
return true
}
}
class MainActivity:AppCompatActivity(){
私有变量searchView:searchView?=null
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById(R.id.btnClickListener).setOnClickListener{
searchView?.onActionViewExpanded()
}
}
重写创建选项菜单(菜单:菜单):布尔值{
菜单充气器。充气(R.menu.search,menu)
searchView=(menu.findItem(R.id.search).actionView作为searchView)
返回真值
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btnClickListener"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
菜单资源
<?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/search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="always" />
</menu>
单击按钮,它将展开搜索视图。
您可以用自己的单击侦听器替换它。它应该会自动打开。你能分享你的菜单项吗?当我点击搜索按钮时,它正在打开,这个按钮被定义为工具栏中的项目。但是我想在单击工具栏时打开它。在工具栏上单击listener set searchView.SetIconnified(false),这样它将展开搜索视图。@Abdul它不工作,工具栏单击listener正在触发?你能核实一下吗?谢谢你的回答,但我对此没有问题。我想在用户单击工具栏时打开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/search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="always" />
</menu>