Добавление выпадающего элемента в панели действий - PullRequest
1 голос
/ 05 марта 2020

Я знаю, что вопрос уже задавался здесь: Как добавить выпадающий элемент на панели действий

Я пытаюсь реализовать решения, но не могу понять, 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);
}

Но я не понимаю, что здесь за адаптер? Может ли кто-нибудь указать мне соответствующую документацию? Большое спасибо

1 Ответ

1 голос
/ 05 марта 2020

Вы можете создать простой адаптер для использования с spinner:

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>

Я взял этот код из пример в этой официальной документации:

Spinner: https://developer.android.com/guide/topics/ui/controls/spinner

...