Kotlin - отсутствует программно созданная стрелка Spinner

После программного создания Spinner стрелка раскрывающегося списка, обычно расположенная справа, по какой-то причине не отображается. Почему пропала стрелка и как это можно показать?

        spinnerItems = arrayOf(
            "Cathedral of the Intercession of the Most Holy Theotokos on the Moat",
            "Ferapontov Monastery",
            "Historic Monuments of Novgorod and Surroundings",
            "Golden Mountains of Altai",
            "Historic Centre of Saint Petersburg and Related Groups of Monuments",
            "Bogoroditse-Smolensky Monastery",
            "White Monuments of Vladimir and Suzdal"
        )

        val mySpinner =
            Spinner(view!!.context, null, android.R.style.Widget_Material_Spinner, Spinner.MODE_DROPDOWN)

        val arrayAdapter = ArrayAdapter(view!!.context, android.R.layout.simple_dropdown_item_1line, spinnerItems)
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line)

        mySpinner.adapter = arrayAdapter

        mFrameLayout.addView(mySpinner)

введите здесь описание изображения


person SD826E    schedule 24.04.2020    source источник


Ответы (1)


это из-за стиля, который вы выбираете для своего спиннера

android.R.style.Widget_Material_Spinner

в отличие от стрелки поведения по умолчанию, в этот стиль не включена. вам нужно заменить его другим стилем или добавить стрелку самостоятельно.

val mySpinner = Spinner(
        ContextThemeWrapper(this, R.style.Widget_AppCompat_Spinner_Underlined),
        null,
        0,
        Spinner.MODE_DROPDOWN
    )

попробуй это

person Bacho Kurtanidze    schedule 24.04.2020
comment
Какой стиль имеет стрелку по умолчанию? - person SD826E; 24.04.2020
comment
просто не указывайте стиль вообще val mySpinner = Spinner(this, Spinner.MODE_DROPDOWN), просто это поможет - person Bacho Kurtanidze; 24.04.2020
comment
Это решило это. Знаете ли вы, как использовать стиль подчеркивания, подобный этому? В XML я использовал style="@style/Widget.AppCompat.Spinner.Underlined", но можно ли это вообще сделать программно? - person SD826E; 24.04.2020
comment
Отлично, но теперь это вызвало другие проблемы, для которых я не могу найти похожие билеты. Я спросил об этом в новый вопрос. - person SD826E; 25.04.2020
comment
Я видел ваш пост, я пытался что-то с этим сделать, но он становится все более странным. Я думаю, что-то не так с API Spinner? в любом случае у меня есть некоторые идеи, и если мне удастся это исправить, я обращусь к вам! - person Bacho Kurtanidze; 25.04.2020