Изменение фонового изображения Text View при каждом нажатии кнопки - PullRequest
0 голосов
/ 11 октября 2018

Всякий раз, когда пользователь нажимает кнопку, текст TextView, а также фоновое изображение TextView, изменяются.Я создал int[] array для хранения идентификатора drawable для использования в TextView.setBackgroundResource(array[index]).Но при увеличении index фон не меняется.Я даже попробовал жестко закодированный индекс для array[], но он все еще устанавливает изображение первого элемента.

 //j and drawable array are global variable.
 int j=1;
 int[] drawablearray=new int[]{R.drawable.girl,R.drawable.beach,R.drawable.flower};

 nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                if(j<drawablearray.length-1){
                    j++;
                    quoteTextView.setBackgroundResource(drawablearray[j]);
                    quoteTextView.getBackground().setAlpha(150);
                }else{
                    j=0;
                    quoteTextView.setBackgroundResource(drawablearray[j]);
                    quoteTextView.getBackground().setAlpha(150);
         } 
    });

Ответы [ 4 ]

0 голосов
/ 11 октября 2018

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

int j=0;
int[] drawablearray=new int[]{R.drawable.girl,R.drawable.beach,R.drawable.flower};

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    quoteTextView.setBackgroundResource(drawablearray[j]);
    quoteTextView.getBackground().setAlpha(150);
    j++;

 nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if(j < drawablearray.length) {

                quoteTextView.setBackgroundResource(drawablearray[j]);
                quoteTextView.getBackground().setAlpha(150);
                j++;
            }
           else
            {
                j = 0;
                quoteTextView.setBackgroundResource(drawablearray[j]);
                quoteTextView.getBackground().setAlpha(150);
                j++;
            }
        }
    });

}
0 голосов
/ 11 октября 2018

Вместо условия «если» я предлагаю вам использовать:

j = (j+1) % drawablearray.length;

Тогда переменная j должна быть полем вашего java-класса (объявлять его вне каждого метода)

0 голосов
/ 11 октября 2018

В вашем коде все нормально.

Правильно ли вы инициализировали nextButton?

Возможно, ваш клик не работает.

ОБНОВЛЕНИЕ

Я обновил ваш код:

nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(j<drawablearray.length){
                quoteTextView.setBackgroundResource(drawablearray[j]);
                quoteTextView.getBackground().setAlpha(150);
                j++;
            }else{
                quoteTextView.setBackgroundResource(R.drawable.girl);
                quoteTextView.getBackground().setAlpha(150);
            }
        }
    });

Для первого3 клика покажет три разных изображения, а затем установит изображение по умолчанию

0 голосов
/ 11 октября 2018

Ваша переменная j должна быть глобальной.Это означает, что он должен быть членом вашего Activity или Fragment, но не переменной внутри вашего метода

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