Как я могу поменять изображения при нажатии кнопки? - PullRequest
0 голосов
/ 05 июня 2019

По сути, все, что нужно сделать ImageButton (InactiveButton), это переключаться на изображение при нажатии. Я понятия не имею, с чего начать, потому что я новичок в Android Studio.

Я пытался использовать класс селектора, но я не знаю, чего он должен достичь. Когда я использую чужой код, такой как public void buttonOnClick (View v), android studio говорит, что он устарел?

XML-макет:

<ImageButton
    android:id="@+id/InactiveButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/button_default" />

РЕДАКТИРОВАТЬ 1: я добавил следующий код и все еще получил «аннотации здесь запрещены» @ override в строке 52, и не может разрешить символ v в строке 53.

Изображение ошибки

РЕДАКТИРОВАТЬ 2: Изображение окончательной ошибки в строке 50

Расположение ошибки

Фактическое сообщение компилятора

Ответы [ 3 ]

0 голосов
/ 05 июня 2019

В вашем onCreate методе из вашего Activity

ImageButton inactiveButton = convertView.findViewById(R.id.InactiveButton);

Теперь у вас есть ссылка на ваш ImageView.

Затем вам нужно определить, что делать, когда вы нажимаете на него.

    inactiveButton .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // put here the code when ImageView is clicked

            // to change the ImageView image  
            inactiveButton.setImageResource(R.drawable.otherimage);
        }
    });

Вот и все.

0 голосов
/ 06 июня 2019

То, что сказал Ферран, абсолютно верно.

Вам необходимо правильно его реализовать.

Сначала определите представление вашего изображения перед методом onCreate, чтобы оно было обработано как глобальная переменная, и преимущество в том, что вы можете использовать его где угодно в одном и том жедеятельность.Как и ImageButton inactiveButton;

Во-вторых, найдите его представление с помощью FindViewById в методе onCreate.Как и inactiveButton = convertView.findViewById(R.id.InactiveButton);

Далее, вы можете реализовать onClickListener для inactiveButton двумя способами: 1. Вы можете реализовать «реализует View.OnClickListener» для своей деятельности, используя inactiveButton.setOnClickListener (this);Это предложит вам реализовать «android.view.View.OnClickListener» для вашей деятельности или фрагмента.Реализуйте этот метод, это добавит метод onClick, и здесь вы можете написать свой код для изменения изображения в кнопке изображения

 @Override
    public void onClick(View v) {
          // add this, this will help you to implement multiple clicklisteners and you can add different methods in each click listener
        switch (v.getId())
        {
            case R.id.InactiveButton:
                 inactiveButton.setImageResource(R.drawable.otherimage);
                break;
            default:break;
        }
    }

first way

Вы можете написать OnClickListener напрямую, вам нужно сохранить это в основном методе
     inactiveButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                       inactiveButton.setImageResource(R.drawable.otherimage); 
                    }
                });

second way

Надеюсь, это поможет вам.Я знаю, что добавил много информации, но думаю, что это поможет вам в долгосрочной перспективе.Вы можете проверить изображения для большей ясности, тогда вы можете легко понять свой недостаток.

С уважением, Amanpreet

0 голосов
/ 05 июня 2019

Вы можете изменить изображение следующим образом:

ImageView someImageView= (ImageView) findViewById(R.id.some_image_view);
imageView.setImageResource(R.drawable.some_image);
...