Kotlin - Программно созданный выпадающий список Spinner показывает подчеркивание и стрелку в выпадающем списке - PullRequest
0 голосов
/ 24 апреля 2020

Почему я получаю это странное поведение выпадающего меню всякий раз, когда я использую настраиваемое текстовое представление для 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(ContextThemeWrapper(view!!.context, R.style.Widget_AppCompat_Spinner_Underlined),
            null,
            0,
            Spinner.MODE_DROPDOWN
        )

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

        mySpinner.adapter = arrayAdapter

        mFrameLayout.addView(mySpinner)

пользовательский выпадающий элемент

<TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        style="?android:attr/dropDownItemStyle"
        android:id="@+id/my_spinner_item"
        android:background="?android:attr/selectableItemBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="true" />

enter image description here

enter image description here

1 Ответ

0 голосов
/ 25 апреля 2020

хорошо, мне удалось найти довольно дешевое решение, но, похоже, оно работает. просто поместите свою логику создания блесны c в xml, скажем так:

<Spinner 
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/Widget.AppCompat.Spinner.Underlined"
     android:id="@+id/mySpinner"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" />

, а затем накачайте ее в своем макете из кода, вы сделаете это из вида активности:

    layoutInflater.inflate(R.layout.item, frameLayout)

    val arrayAdapter = ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, spinnerItems)
    arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item)

    mySpinner.adapter = arrayAdapter
...