【问题标题】:how to change the image of a button with every click?如何在每次点击时更改按钮的图像?
【发布时间】:2012-05-15 06:21:17
【问题描述】:

我在 layout 中创建了一个 button 。在Drawable 文件夹中,我创建了一个名为btn01_stateXML filebtn01_state.xml 分配给我通过“android:background=@drawable/btn01_state”创建的button

现在,button 有一个默认的image img1。当我在buttonclick 时,image1 更改为 img2,一旦我松开单击的鼠标按钮,image2 再次更改为 img1 .

我想要做的是,通过每一次点击来改变按钮的图像。

例如,最初 btn01 有 img01

如果 btn01 被按下==> 将 btn01 的 img 设置为 img02 并保持 img02 直到 btn01 再次被按下。现在,btn01 上面有 img02。

按下 btn01 时,将 img01 设置为 btn01。

我希望这能更清楚地说明我想要做什么。

btn_selector

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/android_blue"
      android:state_pressed="true" />
<item android:drawable="@drawable/ic_launcher"
      android:state_focused="true" />
<item android:drawable="@drawable/ic_launcher" />

ma​​in.xml

<Button 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/btn01"
    android:background="@drawable/btn01_state"/>

【问题讨论】:

    标签: android button imagebutton xml-drawable


    【解决方案1】:

    您可以在代码中轻松完成。

    boolean isPressed = false;
    button.setOnClickListener(buttonListener);
    
    OnClickListener buttonListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isPressed)
               button.setBackgroundResource(R.drawable.icon1);
            else
               button.setBackgroundResource(R.drawable.icon2);
    
            isPressed = !isPressed;
       }
    };
    

    【讨论】:

    • 不适用于我。它仅在按下按钮时调用 onClick,而不是在释放按钮时调用。所以每次点击它只会做一个分支。
    • @ZdravkoDonev - 这是因为操作要求如何通过点击而不是触摸来更改按钮图像。如果您想更改按钮状态,您可能应该检查此链接 - stackoverflow.com/a/14024007/1376688
    【解决方案2】:

    简单的方法

    btn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
        btn.setBackgroundDrawable(getResources().getDrawable(R.drawable.locationbutton_on));
                    }
            }); 
    

    【讨论】:

      【解决方案3】:

      也许可以用代码编写。在按钮上放置一个监听器,当按钮被点击时,背景会改变。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        相关资源
        最近更新 更多