Как переключать фоновое изображение по нажатию кнопки? - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть этот код:

button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        button1.setBackgroundResource(R.drawable.detailpressed);
        Chapter_sync.add(chapid);
    }

Я пытаюсь переключить все методы, вызываемые в следующем списке щелчков.

Например, в первый раз, когда я нажимаю эту кнопку, вызывается setBackgroundResource (R.drawable.detailpressed), и при следующем щелчке тот же метод вызывается с другой прорисовкой.

Что-то вроде кнопки переключения. Кто-нибудь хороший в этой помощи плз?

Ответы [ 4 ]

2 голосов
/ 07 февраля 2012

вы можете взять переменную

int i=0;

будет увеличиваться с каждым кликом.

if(i%2==0)
   set one image
else 
   set another image
1 голос
/ 07 февраля 2012

объявить переменную как

boolean isOddClicked = true;

и обновить прослушиватель кликов как

button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //Do stuff here for chnaging background of button
            if(isOddClicked) {
                button1.setBackgroundResource(R.drawable.detailpressed);
                isOddClicked = false;
            } else {
                button1.setBackgroundResource(R.drawable.detailpressed_SECOND_IMAGE);
                isOddClicked = true;
            }

            //Do your task
            Chapter_sync.add(chapid);
        }

ПРИМЕЧАНИЕ: Если ваше требование перемещается между двумя изображениями, вы можете использовать toggle button и настроить его.Это будет работать так же, как ваше требование.

1 голос
/ 07 февраля 2012

Как насчет создания массива идентификаторов рисованного объекта и сохранения индекса:

private final int[] myDrawables = {R.drawable.detailpressed, R.drawable.detailpressed1, ...};
//...
button1.setOnClickListener(new OnClickListener() {
    int index = 0;
    @Override
    public void onClick(View v) {
        button1.setBackgroundResource(myDrawables[index++ % myDrawables.length]);
        Chapter_sync.add(chapid);
    }
}
0 голосов
/ 28 июля 2017

если xml как следующий

    <code>

        <Button
            android:id="@+id/btnListView"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:background="@drawable/list_view"
            android:onClick="switchToListView"
            android:visibility="visible"
            />

        <Button
            android:id="@+id/btnGridView"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:background="@drawable/grid_view"
            android:onClick="switchToGridView"
            android:visibility="gone"
            />
    <code>

Код обработки будет выглядеть как

<code>
public void switchToListView(View view) {
    (Button) findViewById(R.id.btnListView).setVisibility(View.GONE);
    (Button) findViewById(R.id.btnGridView).setVisibility(View.VISIBLE);
}
public void switchToGridView(View view) {
    (Button) findViewById(R.id.btnGridView).setVisibility(View.GONE);
    (Button) findViewById(R.id.btnListView).setVisibility(View.VISIBLE);

}

</code>
...