如何在按钮点击时切换背景图像?

时间:2012-02-07 10:30:59

标签: android button onclick

我有这段代码:

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

我要做的是切换以下clicklistener中调用的所有方法。

例如,第一次单击此按钮时,将调用setBackgroundResource(R.drawable.detailpressed),并在下一次单击时使用不同的drawable调用相同的metod。

像切换按钮之类的东西。 有人擅长这个PLZ的帮助吗?

4 个答案:

答案 0 :(得分:2)

你可以采取变量

int i=0;

每次点击都会增加。

if(i%2==0)
   set one image
else 
   set another image

答案 1 :(得分:1)

如何创建drawable ID的数组并保存索引:

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);
    }
}

答案 2 :(得分:1)

将变量声明为

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并自定义它。它将与您的要求相同。

答案 3 :(得分:0)

如果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>