2017-12-17 10 views
1

ボタンを押したときにImageButtonの画像を変更しようとしています。ここに私のコードは次のとおりです。ImageButtonの変更:新しい画像が元の画像の上にプロットされます

私は私の MainActivity.java
<ImageButton 
    android:id="@+id/my_btn" 
    app:srcCompat="@drawable/btn_icon1" /> 

int myBtnState = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 
    myButton = (ImageButton) findViewById(R.id.my_btn); 
    myButton.setOnClickListener(this); 
    ... 
    @Override 
    public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.my_btn: 
      changeIcon(); 
      break; 
    ... 
    private void changeIcon() { 
     if(myBtnState == 0) { 
      myButton.setBackgroundResource(R.drawable.btn_icon1); 
      myBtnState = 1; 
     } else { 
      myButton.setBackgroundResource(R.drawable.btn_icon2); 
      myBtnState = 0; 
     } 
    } 

私はボタンを押したときに、このコードは、それがどのように見える実行したときに、私が持っている私のactivity_main.xml

最初はbtn_icon1が半透明の背景を持っているので2回上に描画されています。暗く見えます。次回にボタンbtn_icon2を押すと、btn_icon1の上に描画されます。私は、このコードを使用してアイコンを変更し、互いに上に描画しないことを期待しました。私はここで間違って何かしていますか?

答えて

1

私は答えを見つけた:

私がやったときに私は、画像の背景を設定しました:

代わり
myButton.setBackgroundResource(R.drawable.btn_icon1); 

、私は実行する必要があります。

myButton.setImageResource(R.drawable.btn_icon1); 
関連する問題