Есть ли способ применить значок селектора на Popupmenu? - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу показать свое Popupmenu с иконками, а не просто с обычной иконкой, это иконка с селектором.

Но кажется, что селектор применим только к кнопкам, Textview или sth.

Есть ли альтернатива, или я делаю неправильно?

Например:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:title="foo"
        android:id="@+id/foo_menu"
        android:icon="@drawable/imgbtn_states"
        app:showAsAction="always"
        />
</menu>

@ drawable / imgbtn_states - селектор.

Это @drawable/imgbtn_states

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/check"
        android:state_pressed="true" />
    <item android:drawable="@drawable/check"
        android:state_focused="true" />
    <item android:drawable="@drawable/uncheck"
        android:state_selected="false"/>
</selector>

1 Ответ

0 голосов
/ 25 сентября 2019

Используйте CheckedTextView вместо TextView, он может иметь как рисование, так и галочку одновременно.

Пример:

<CheckedTextView
        android:id="@+id/item_checkk"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="Item"
        android:layout_marginHorizontal="10dp"
        android:drawableLeft="@drawable/ic_add"
        android:checkMark="@drawable/check_mark"
        android:drawablePadding="15dp"/>

для CheckMark создать check_mark.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_check_black"
            android:state_checked="true" />

    <item android:drawable="@drawable/ic_uncheck_white"
            android:state_checked="false"/>
</selector>

В вашей деятельности

class Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sof)

        var isChecked = checked_textView.isChecked

        checked_textView.setOnClickListener {
            if(isChecked){
               checked_textView.isChecked  =false
               isChecked = false
            }else{
               checked_textView.isChecked  =true
               isChecked = true
         }
      }
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...