Как изменить изображения двух кнопок при нажатии одного на Android? - PullRequest
0 голосов
/ 14 января 2020

Я создаю опору на базе Android, java для проекта колледжа.

Прямо сейчас я не могу найти, как установить две кнопки в нажатом состоянии и заставить их обе вернуться в без нажатий снова после отпускания щелчка (больше в частности, «кнопка смайлика», при нажатии одной из кнопок «1», «2», «пусто» или «моя»). Вот что я имею в виду: Скриншот .

Я попытался установить кнопку Smile в нажатом состоянии с помощью: buttonEmotikon.setPressed(!buttonEmotikon.isActivated()); и <item android:state_pressed="true" android:drawable="@drawable/wow"/> в xml, но после инструкции onClick она не вернулась к основному изображению.

Это полный xml файл для кнопки улыбки:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/wow"/>
    <item android:state_activated="true">
        <bitmap android:src="@drawable/sad"/>
    </item>
    <item android:state_first="true" android:drawable="@drawable/smile2"/>
    <item android:drawable="@drawable/smile2"/>
</selector>

Это отрывок макета с кнопкой улыбки и общей c серой кнопкой (такой же, как у остальных):

`<ImageButton
            android:layout_width="47dp"
            android:layout_height="47dp" app:srcCompat="@drawable/block"
            android:id="@+id/imageButton25"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="52dp"
            android:layout_marginTop="4dp" app:layout_constraintTop_toBottomOf="@+id/imageButton20"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.0" app:layout_constraintStart_toEndOf="@+id/imageButton24"
            android:layout_marginStart="3dp" app:layout_constraintHorizontal_bias="0.0"
            android:src="@drawable/field_bomb" tools:ignore="RtlCompat"/>
    <ImageButton
            android:layout_width="49dp"
            android:layout_height="49dp" app:srcCompat="@drawable/smile2"
            android:id="@+id/buttonEmotikon" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
            android:layout_marginTop="60dp" app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintHorizontal_bias="0.488" app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintVertical_bias="0.019" android:src="@drawable/emotikon" tools:ignore="RtlCompat"/>`

Мой метод onClick выглядит следующим образом:

`@Override
    public void onClick(View v){
        Intent intent;
        v.setActivated(!v.isActivated());
        v.setEnabled(false);
        switch (v.getId()) {
            case R.id.buttonEmotikon:

`, и есть случаи с разными идентификаторами кнопок. Все интерактивные объекты - это кнопки ImageButtons.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Чтобы изменить изображение на логическое значение isActivation, добавьте следующий код:

<item android:state_activated="false">
    <bitmap android:src="@drawable/smile2"/>
</item>
0 голосов
/ 14 января 2020

Вы должны использовать селектор в качестве фона ToggleButton и поместить ваши изображения в правильные состояния, как в этом ответе

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