簡體   English   中英

Android Imagebutton 更改 Image OnClick

[英]Android Imagebutton change Image OnClick

我剛剛在res文件夾下添加了一個新的drawable文件夾。 drawable文件夾中,我從drawable-hdpi文件夾中復制了ic_launcher.png文件。 當我按下按鈕時,我想通過新的圖像更改標准的ImageButton圖像。 我寫了一些代碼,但是當我啟動應用程序時,它崩潰了。

Button imgButton; 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);      
}

View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {

        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

編輯:我改為這個,這也不起作用。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

編輯 2:這有效。 謝謝大家。

ImageButton button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button= (ImageButton)findViewById(R.id.imgButton);
    button.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        button.setBackgroundResource(R.drawable.ic_launcher);

    }
};

這有點誤導了我 - 它應該是setImageResource而不是setBackgroundResource :) !!

以下工作正常:

ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);       
 btn.setImageResource(R.drawable.actions_record);

而在使用setBackgroundResource ,實際圖像按鈕的圖像會保留,而背景圖像會更改,這會導致圖像按鈕對象看起來很丑

謝謝。

<ImageButton android:src="@drawable/image_btn_src" ... />

image_btn_src.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/>
</selector>

那是因為 imgButton 為空。 試試這個:

findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);

或更容易閱讀:

imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);

然后在 onClick: imgButton.setBackgroundResource(R.drawable.ic_action_search);

你可以在你的 XML 文件中做到這一點:

android:onClick="@drawable/ic_action_search"

你的imgButton變量有imgButton按鈕:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}

要在單擊 ImageButton 時在不同圖像之間切換,我使用了這樣的布爾值:

ImageButton imageButton;
boolean buttonOn;

imageButton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         if (!buttonOn) {
             buttonOn = true;
             imageButton.setBackground(getResources().getDrawable(R.drawable.button_is_on)); 
         } else {
             buttonOn = false;
             imageButton.setBackground(getResources().getDrawable(R.drawable.button_is_off));
         }
     }
});

這很簡單

public void onClick(View v) {

        imgButton.setImageResource(R.drawable.ic_launcher);

    }

使用 set Background image resource 將改變按鈕的背景

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM