2011-12-21 26 views
12

Mam ImageView że powinien być zmieniony na kliknięciaandroid imageview.setBackgroundResource() nie działa

public class Settings extends Activity implements OnClickListener 
{ 
    private ImageView im1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.settings); 
     im1 = (ImageView) findViewById(R.id.imageView1); 
     im1.setOnClickListener(this); 
    } 
@Override 
public void onClick(View v) 
    { 
    // TODO Auto-generated method stub 
    if (v == im1) 
    { 
     Log.d("test", "hey!"); 
      v.setBackgroundResource(R.drawable.img1); 
      } 
    } 
} 

po kliknięciu tras metoda i wypisuje „hej!” ale obraz się nie zmieni?

EDIT: Zapomniałem wspomnieć, że imageview zawiera inny obraz dostarczony przez układ pliku xml

+0

jest obraz, że ImageView zawiera przejrzyste? ponieważ tło jest, cóż, w tle – njzk2

+0

nie działa po prostu dobrze teraz –

Odpowiedz

41

Umownie należy używać setImageResource(R.drawable.img1); (lub setImageDrawable(getResources().getDrawable(R.drawable.img1));) zamiast setBackgroundResource(R.drawable.img1);.

+0

działa jak urok: D dziękuję! –

+0

setImageDrawable nie będzie działać na pre-Lollipop. – Subho

+0

@Chris Cashwell dziękuję panu. –

1
ImageView i = (ImageView) findViewById(R.id.imageView1); 
    i.setImageResource(R.id.logo); 

    or 

    i.setBackgroundResource(R.drawable.icon); 
-1

Nie należy stosować żadnej konwencji, która ustawiłaby obrazResource(). Oba interfejsy API mogą być używane.

Również w twoim przypadku wygląda to tak, jak w przypadku niezsynchronizowanych zasobów.

1

UPDATE

Teraz można użyć jak poniżej,

imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.img1)); 
+0

setImageDrawable nie będzie działać na pre-Lollipop – Subho

1

Try This API 25

imgSchedule.setImageDrawable(getResources().getDrawable(R.drawable.circle_image_selected));