Java 更改Android搜索对话框的外观
我正在尝试使用搜索对话框在android应用程序中实现搜索功能。在阅读了文档之后,我在应用程序中按下搜索按钮时出现了这个搜索对话框 正如您所看到的,搜索对话框太小(应用程序栏可以在其下方看到),它没有居中,并且在后退按钮附近包含应用程序图标 指南中显示的搜索对话框在应用程序栏中垂直居中,在“后退”按钮附近没有应用程序图标,这也是我要为搜索对话框执行的操作。但我似乎找不到任何关于如何做到这一点的资源。有人能帮我吗 提前谢谢 编辑:以下是启用搜索对话框的代码Java 更改Android搜索对话框的外观,java,android,kotlin,Java,Android,Kotlin,我正在尝试使用搜索对话框在android应用程序中实现搜索功能。在阅读了文档之后,我在应用程序中按下搜索按钮时出现了这个搜索对话框 正如您所看到的,搜索对话框太小(应用程序栏可以在其下方看到),它没有居中,并且在后退按钮附近包含应用程序图标 指南中显示的搜索对话框在应用程序栏中垂直居中,在“后退”按钮附近没有应用程序图标,这也是我要为搜索对话框执行的操作。但我似乎找不到任何关于如何做到这一点的资源。有人能帮我吗 提前谢谢 编辑:以下是启用搜索对话框的代码 MainActivity.kt cla
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val root = binding.root
setContentView(root)
//Setup the app bar
setSupportActionBar(binding.toolbar);
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val inflater = menuInflater;
inflater.inflate(R.menu.app_bar_menu, menu)
return true;
}
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
R.id.action_search -> {
onSearchRequested()
true
}
else -> {
super.onOptionsItemSelected(item)
}
}
}
searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/app_name">
</searchable>
<?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">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:title="@string/app_name" />
</androidx.constraintlayout.widget.ConstraintLayout>
我做了一个不同的搜索方法,我使用了Android Studio搜索视图, 这是主要的活动代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
MenuItem item = menu.findItem(R.id.mySearchButton);
SearchView searchView = (SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
您必须创建一个Android资源文件,选择资源类型“菜单”,并根据需要调用它,然后添加此项:
<item android:id="@+id/mySearchButton"
android:title="Button"
android:icon="@drawable/search_icon"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always"/>
此代码适用于我,图片如下:
我希望它也适用于您。使用创建搜索对话框所需的方法,这是它可以实现的最相似的方面: 这是我实现的代码: MainActivity.class代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@SuppressLint("ResourceType")
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(true);
searchView.setIconified(false);
//Here you can set the parameters of the search view
return true;
}
我创建了一个名为options_menu.xml的菜单资源文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/search"
android:title="title"
android:icon="@drawable/search_icon"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.widget.SearchView" />
</menu>
以及名为search.xml的可搜索xml文件
<?xml version="1.0" encoding="utf-8"?>
<Searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="Your hint"
android:label="Label text">
</Searchable>
我在drawable文件夹中创建了菜单图标,但如果需要,可以更改为其他图标
此外,我还为您可以添加到searchView的所有自定义设置留下了几个链接:
我希望这是适合您的解决方案。与您的问题相关的代码将help@Abِ我添加了代码请发布
mainactivity
xml文件,这就是乐趣所在is@forthelulx我在使用本机搜索栏时添加了它,它总是有限制,根据您的需求修改搜索栏总是很困难,因此最好创建自己的自定义搜索栏,这样您就可以确保它易于管理,即使在将来也不需要进行大量更改。我知道这是在android中实现搜索的另一种方法。但我想知道,使用我介绍的方法是否有可能实现相同的外观