2012-08-28 51 views
1

我试着这样做:插入来自图库的图像上的按钮,Android的

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 1 && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 
     Bitmap bmp = BitmapFactory.decodeFile(picturePath); 
     b[1].setCompoundDrawablesWithIntrinsicBounds(null, new BitmapDrawable(bmp), null, null); 
} 

,但它不会设置图像,不管是什么。我尝试了好几种不同的方法太像使用的ImageButton,而不是一个按钮的使用:

imageButton.setImageBitmap(bmp) 

画廊打开罚款,并且回调来onActivityResult(...) 但图像不会出现在按钮,我有一个按钮阵列。

+0

但是图像不会出现在按钮上...您想要在按钮上显示图像? – Numair

+0

是的,我希望图像在按钮上。 – lolcat

+0

你试过ImageButton.setImageUri(selectedImage)吗?不过,我不确定它是否可以处理内容提供​​商uris。 – bigstones

回答

0

我做了一个快速测试。以下代码适用于我。如果有了这个,你仍然不能设置图像,我会检查是否有布局问题(即设置图像,但没有空间显示它)。

activity_main.xml只是一个ImageButton设置为wrap_content,在match_parent的主布局中。

public class MainActivity extends Activity { 

    ImageButton imgButton; 

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

     imgButton = (ImageButton) findViewById(R.id.imgButton); 

     imgButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_PICK); 
       intent.setType("image/*"); 

       startActivityForResult(intent, 0); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if(requestCode == RESULT_CANCELED) return; 

     ParcelFileDescriptor fd; 
     try { 
      fd = getContentResolver().openFileDescriptor(data.getData(), "r"); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      return; 
     } 

     Bitmap bmp = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor()); 

     imgButton.setImageBitmap(bmp); 
    } 
} 
+0

我认为有一个布局问题,但我有点不明白,如果一个图像被设置在一个按钮上,它应该被设置,对吧?如果我使用资源图片而不是图片图片,图片会完美显示。 – lolcat

+0

@ChaitanyaPantar:如果它适用于资源,问题不在布局中,我不认为它可以是您选择的图片。你有没有试过我的代码加载位图?它在这里工作(在模拟器上测试,android 2.2)。 – bigstones

+0

我试过你的方法无济于事。我实际上使用了一组按钮(因为我有文本显示在按钮上的图像),就像我上面的代码片段,但我将它们全部转换为imagebuttons,仍然没有。哦,伙计BTW即时通讯测试此代码在星系标签10.1。你想看看我班的一个贴吧吗? – lolcat