2017-12-17 5 views
1

Ich versuche, das Bild eines ImageButton zu ändern, wenn die Taste gedrückt wird. Hier ist mein Code:ImageButton-Änderung: Das neue Bild wird über das Originalbild geplottet

in meinem activity_main.xml ich habe:

<ImageButton 
    android:id="@+id/my_btn" 
    app:srcCompat="@drawable/btn_icon1" /> 

In meinem MainActivity.java ich habe:

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

, wenn ich diesen Code ausführen, wenn ich die Taste drücken, es sieht aus wie die erste Mal btn_icon1 wird über sich selbst 2 Mal gezeichnet, wie es einen halbtransparenten Hintergrund hat Ich sehe es wird dunkler. Und beim nächsten Mal drücke ich den Knopf btn_icon2 wird über btn_icon1 gezeichnet. Ich habe erwartet, dass mit diesem Code die Icons geändert werden, nicht übereinander gezeichnet werden. Gibt es irgendetwas, was ich hier falsch mache?

Antwort

1

fand ich die Antwort:

Ich war der Hintergrund des Bildes einstellen, wenn ich tat:

myButton.setBackgroundResource(R.drawable.btn_icon1); 

Stattdessen ich tun sollte:

myButton.setImageResource(R.drawable.btn_icon1); 
Verwandte Themen