2011-12-21 22 views
12

मैं एक imageView कि क्लिकएंड्रॉयड imageview.setBackgroundResource() काम नहीं करता है

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

पर बदला जाना चाहिए जब विधि रन क्लिक किया और बाहर प्रिंट है "अरे!" लेकिन छवि नहीं बदलेगी?

संपादित: कि imageview XML लेआउट फ़ाइल द्वारा प्रदान की

+0

में यह प्रयास करें छवि है कि आपके imageView शामिल पारदर्शी है? क्योंकि पृष्ठभूमि अच्छी तरह से है, पृष्ठभूमि में – njzk2

+0

नहीं, यह अभी ठीक काम करता है –

उत्तर

41

परंपरा के मुताबिक एक और छवि, आप setBackgroundResource(R.drawable.img1); के बजाय setImageResource(R.drawable.img1); (या setImageDrawable(getResources().getDrawable(R.drawable.img1));) का उपयोग किया जाना चाहिए होता है उल्लेख करना भूल गया।

+0

आकर्षण की तरह काम: डी धन्यवाद! –

+0

setImageDrawable प्री-लॉलीपॉप पर काम नहीं करेगा। – Subho

+0

@ क्रिस कैशवेल धन्यवाद श्रीमान। –

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

    or 

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

इसका कोई सम्मेलन नहीं है जो setimageResource() का उपयोग किया जाना चाहिए। दोनों एपीआई का उपयोग किया जा सकता है।

इसके अलावा, आपके मामले में, यह सिंक संसाधनों के बाहर की तरह दिखता है।

1

अद्यतन

अब, आप नीचे की तरह उपयोग कर सकते हैं,

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

setImageDrawable प्री-लॉलीपॉप पर काम नहीं करेगा – Subho

1

एपीआई 25

imgSchedule.setImageDrawable(getResources().getDrawable(R.drawable.circle_image_selected)); 
संबंधित मुद्दे