android, есть ли лучший способ заменить выпадающий значок Spinner - PullRequest
0 голосов
/ 29 февраля 2020

Используя AppCompatSpinner, он поставляется со значком вниз по умолчанию.

enter image description here

Необходимо изменить на

enter image description here

android:background="@null"

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

enter image description here

фрагмент макета:

<RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                >
                <androidx.appcompat.widget.AppCompatSpinner
                    android:id="@+id/spinner"
                    android:layout_width="@dimen/spinner_width"
                    android:layout_height="@dimen/pinner_height"
                    android:dropDownWidth="@dimen/dropdown_width"
                    android:spinnerMode="dropdown"
                    android:textSize="16sp"
                    android:layout_toLeftOf="@id/spinner_icon"
                    android:background="@null"

                    />
                <ImageView
                    android:id="@+id/spinner_icon"
                    android:layout_width="@dimen/more_options_size"
                    android:layout_height="@dimen/options_size"
                    android:layout_alignParentBottom="true"
                    android:src="@drawable/ic_more_vert_black_24dp"
                    android:background="?attr/selectableItemBackground"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center"
                    />
        </RelativeLayout>

, но нажатие на три точки не вызывает раскрывающийся список параметров счетчика.

, поэтому необходимо подключите обработчик щелчка на трех точках и назовите AppCompatSpinner.performClick():

val options = findViewById<View>(R.id.spinner_icon)
        options.setOnClickListener{
            theSpinner.performClick()  //callOnClick()
        }

, он работает, но не уверен, есть ли лучшее или более простое решение для изменения значка счетчика? или если у этого подхода есть какой-то побочный эффект?

...