2013-06-27 3 views
0

Я пытаюсь изменить размер изображения, которое я получаю из галереи камеры, чтобы соответствовать ImageView в другом действии. Я получаю изображение. Мне просто нужно знать, как изменить его размер в соответствии с ImageView.Как изменить размер изображения

image1.setOnClickListener(new View.OnClickListener() { 
public void onClick(View arg0) { 
Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0); 
} 
}); 
} 
protected void putExtras(Bundle bundle) { 
     // TODO Auto-generated method stub 

    } 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == 0) { 
      Uri selectedImageUri = data.getData(); 
      selectedImagePath = getPath(selectedImageUri); 
      System.out.println("Image Path : " + selectedImagePath); 
      image1.setImageURI(selectedImageUri); 
    }}} 
public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 

мой XML

  <ImageView 
     android:id="@+id/image1" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_margin="3dp" 
     android:layout_weight=".1" 
     android:background="@drawable/greenline" />      

ответ

1

Ваш вопрос только имеет смысл, если ImageView имеет определенный размер изображения может быть установлен в. Когда вы устанавливаете layout_width в wrap_content, тогда все наоборот. ImageView будет обтекать изображение, и это, похоже, не то, что вы хотите. Поэтому вам нужно использовать match_parent для layout_width, layout_height или указать конкретный размер, например 30dip или такой. После этого вы можете использовать android: scaleType, как упоминалось выше.

Так изменить ImageView на что-то вроде этого:

<ImageView 
     android:id="@+id/image1" 
     android:layout_width="match_parent " 
     android:layout_height="match_parent " 
     android:scaleType="center" 
     android:layout_margin="3dp" 
     android:layout_weight=".1" 
     android:background="@drawable/greenline" /> 

Какой scaleType вы используете, зависит от того, как изображение должно быть установлено на ImageView, с или без масштабирования и кадрирования и т.д.

+0

Он работает для ширина, но не высота. Я должен делать что-то неправильно. Я вернусь к этому позже. – SmulianJulian

+0

Если вы уточните, что «не работает для высоты», я мог бы дать вам несколько советов –

+0

У меня есть много текстовых элементов и кнопок в TableRow и. image1 - всего лишь один маленький вид. У меня есть каждая кнопка, а таблица - match_parent. Ширина изображения такая же, как и я, но высота слишком велика. – SmulianJulian

1

Вы можете установить атрибут android:scaleType в ImageView. Более подробную информацию вы можете найти here.

1

Вы можете попробовать использовать Bitmap.createScaledBitmap(), если делать это программно