gpt4 book ai didi

java - 更改 Android 搜索对话框的外观

转载 作者:行者123 更新时间:2023-12-02 12:44:57 24 4
gpt4 key购买 nike

我正在尝试使用搜索对话框将搜索功能实现到 android 应用程序中。遵循文档后,在我的应用程序中按下搜索按钮时,我得到了这个搜索对话框。
Screenshot of the emulator
如您所见,搜索对话框太小(在其下方可以看到应用栏),它没有居中,并且在返回按钮附近包含应用图标。
指南中显示的搜索对话框在应用程序栏中垂直居中,并且在后退按钮附近没有应用程序图标,这也是我想要为我的搜索对话框执行的操作。但我似乎找不到任何关于如何做到这一点的资源。谁能帮我吗?
提前致谢!
编辑:这是启用搜索对话框的代码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>
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">

<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>

最佳答案

使用您想要创建搜索对话框的方法,这是它可以实现的最相似的方面:
/image/hwTlF.png
这是我实现的代码:
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>
我在可绘制文件夹中创建了菜单图标,但您可以根据需要更改为其他图标。
我还留下了几个链接,指向您可以添加到 searchView 的所有自定义项:
https://developer.android.com/guide/topics/search/searchable-config
https://developer.android.com/reference/android/widget/SearchView
我希望这是适合您的解决方案。

关于java - 更改 Android 搜索对话框的外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62592008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com