2014-12-30 4 views
0

У меня есть этот код в файл xml для изображения:Изменение макета изображения и позиция из кода Java

<ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/moneybag" 
     android:src="@drawable/bee" 
     android:background="@color/white" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

я отправляю новый образ на клик ..

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == TAKE_PHOTO_CODE && resultCode == EditProfileActivity.RESULT_OK) { 
     Log.d("CameraDemo", "Pic saved"); 

     File imgFile = new File(dir+"123.jpg"); 

     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
     cus_profile_pic.setImageBitmap(myBitmap); 
    } 
} 

Все работает, кроме Размер изображения. Я получаю большое изображение после захвата изображения с камеры. Что делать, чтобы получить изображение на одном и том же месте с одинаковой шириной и высотой (как показано в xml).

Спасибо.

ответ

1

Для установки размера изображения создать layoutParams, если ваш ImageView родитель является LinearLayout, так что вы должны сделать это:

LinearLayout.LayoutParams lp = imageView.getLayoutParams(); 
lp.width = lastImageWidth; 
lp.height = lastImageHeight; 
imageView.setLayoutParams(lp); 

Если RelativeLayout Так используйте RelativeLayout вместо LinearLayout в приведенном выше примере

+0

Я хочу установить параметры изображения из Java после загрузки нового изображения. Я заменяю старый образ новым. Итак, я хочу такое же позиционирование, как раньше. Я не хочу, чтобы изображение было в центре. –

+0

Продвигайте ширину и высоту последнего изображения перед его заменой. Затем замените изображение и установите для него ширину и высоту последнего изображения. Также установите scaleType на centerCrop –

+0

Я не знаю, как его установить. Не могли бы вы поместить некоторый код для установки этих параметров? –

0

У вас Проверено

android:scaleType="fitCenter" 

в xml?

+0

после того, как я сделаю снимок. он не сохраняет свои параметры по умолчанию. Когда я заменю это изображение новым изображением. Это выглядит как большое изображение. –

0

Это также изменится в зависимости от используемого вами тестового устройства. Таким образом, ваша проблема заключается не только в том, насколько большой образ. Разрешение фотографий, плотность экрана устройства и размер физического экрана будут различаться. Таким образом, положение и размер вашего изображения изменится.

ImageView или ImageButton отображает изображение внутри себя, но также зависит от разрешения изображения. Поэтому подумайте о том, чтобы поместить растровое изображение в меньший контейнер (imageview или imagebutton), контейнер попытается масштабировать изображение в соответствии с его размерами или размерами экрана. Этот масштаб вниз должен также сохранять соотношение сторон изображения в соответствии с выбранным типом scaleType.

Таким образом, вы можете сделать эти вещи: 1) Шкала вниз растрового изображения, прежде чем положить его в ImageView

2) Вместо того, говоря содержание обертка дают конкретные размеры

3) Сделайте ширину match_parent и поставить другой (возможно прозрачный) манекен смотреть на свою сторону и сделать высоту 0dp и сделать свойство adjustViewBounds истинным. (0 дп означает, что высота является динамическим в соответствии с содержанием, чтобы сохранить пропорции)

4) Изменение scaleType к CENTER_INSIDE

Смежные вопросы