android - 在操作栏中添加一个下拉项目

标签 android kotlin android-menu

我知道这个问题已经在这里问了:How to add a Dropdown item on the action bar

我正在尝试实施解决方案,但无法弄清楚Kotlin代码使其正常工作。抱歉,我仍然不熟悉Android开发。

我创建了overflow_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

    <item android:id="@+id/spinner"
        android:title="haveri"
        yourapp:showAsAction="ifRoom"
        yourapp:actionViewClass="android.widget.Spinner" />
</menu>

然后,我试图将这段代码翻译成Kotlin:
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_layout, menu);
    MenuItem item = menu.findItem(R.id.spinner);
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); // get the spinner
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(onItemSelectedListener); 

我尝试了以下方法:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    super.onCreateOptionsMenu(menu)
    getMenuInflater().inflate(R.menu.overflow_menu, menu)

    val item = menu?.findItem(R.id.spinner)
    val spinner = MenuItemCompat.getActionView(item) as (Spinner) // get the spinner

    spinner.adapter = adapter
    spinner.setOnItemSelectedListener(onItemSelectedListener);
}

但是我不明白这里是什么适配器?有人可以指出相关文件吗?
非常感谢你

最佳答案

您可以创建一个简单的适配器以与微调器一起使用:

ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
).also { adapter ->
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    // Apply the adapter to the spinner
    spinner.adapter = adapter
}

将此添加到res / values / arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

我从官方文档中的示例中获取了该代码:

微调框:https://developer.android.com/guide/topics/ui/controls/spinner

关于android - 在操作栏中添加一个下拉项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60546474/

相关文章:

android - 如果第一个 fragment 为空,如何动态移动到另一个 fragment 筛选?

kotlin 通过覆盖值合并两个映射

java - 为什么我的工具栏没有显示任何内容,即使它显示并放置正确?

android - Viewpager 不显示第一个 fragment 的菜单项

android - 需要帮助弄清楚如何实现 UI

android - 更新当前列表项

android - 反向谷歌图像搜索

java - AIR Java 扩展中的 vector 传输速度

kotlin - 无法在多平台项目中使用 kotlinx.serialization

kotlin - Kotlin 的 Fisheye/Crucible 语法高亮