来自相机的图像在imageView中显得过于拉伸

时间:2013-12-27 07:14:01

标签: android android-layout

我正在尝试使用相机单击照片,然后将其显示在imageView中。最初,图像看起来非常小,并且不适合imageView。但是,在阅读了几篇博客后,我对代码进行了以下更改:

photo = android.provider.MediaStore.Images.Media.getBitmap(cr,Uri.fromFile(tempPhoto));
//image.setImageBitmap(photo);
Drawable drawable = new BitmapDrawable(getResources(), photo);
image.setBackground(drawable);
image.setScaleType(ScaleType.FIT_CENTER);

我的布局文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

      <AutoCompleteTextView
            android:id="@+id/location"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="1dip"
            android:background="@color/translucent_grey"
            android:ems="10"
            android:hint="@string/hint_location"
            android:inputType="text"
            android:textSize="14sp" >

            <requestFocus />
    </AutoCompleteTextView>

<RelativeLayout
     android:layout_width="fill_parent"
     android:layout_height="200dp" >
     <ImageButton
         android:id="@+id/snap"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBottom="@+id/image"
         android:layout_alignParentRight="true"
         android:layout_marginBottom="108dp"
         android:layout_marginRight="160dp"
         android:background="@color/white"
         android:src="@drawable/camera" />

     <ImageView
         android:id="@+id/image"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_alignParentLeft="true"
         android:orientation="horizontal" />
</RelativeLayout>     

<FrameLayout
        android:id="@+id/datetime_container"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginBottom="2dp" />
<FrameLayout 
    android:id="@+id/eventDetails_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="2dp" />

</LinearLayout>
</ScrollView>

添加后,图像拉伸太多,看起来很长。我的目标是使图像适合屏幕宽度,然后具有灵活的图像高度,以便可以保持比例(就像fb modile显示纵向和横向图像适合屏幕宽度的方式)

有谁知道怎么做?

6 个答案:

答案 0 :(得分:1)

将此参数用于ImageView

android:scaleType="fitXY"

答案 1 :(得分:1)

使用:

image.setScaleType(ScaleType.FIT_XY);

然后尝试以编程方式设置imageView的高度。

答案 2 :(得分:1)

使用参数

  android:adjustViewBounds="true"
        android:scaleType="fitXY"

答案 3 :(得分:0)

看到你的代码后,你不应该使用fill parent来实现使用包装内容。

<ImageView
     android:id="@+id/image"
     android:layout_width="wrap_content"//fill_parent
     android:layout_height="wrap_content"//fill_parent
     android:layout_alignParentLeft="true"
     android:orientation="horizontal" />

答案 4 :(得分:0)

通常ImageView使用setImageDrawable(drawable);因为ImageView自己关注缩放和拉伸,你可以使用 scaleType 根据你的要求

答案 5 :(得分:0)

这是我的代码:

 photo = android.provider.MediaStore.Images.Media.getBitmap(cr, Uri.fromFile(tempPhoto));
 //image.setImageBitmap(photo);
 Drawable drawable = new BitmapDrawable(getResources(), photo);
 image.setBackground(drawable);
 image.setScaleType(ScaleType.FIT_XY);

布局文件

<RelativeLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content" >
     <ImageButton
         android:id="@+id/snap"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBottom="@+id/image"
         android:layout_alignParentRight="true"
         android:layout_marginBottom="108dp"
         android:layout_marginRight="160dp"
         android:background="@color/white"
         android:src="@drawable/camera" />

     <ImageView
         android:id="@+id/image"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:adjustViewBounds="true"
         android:orientation="horizontal" />
</RelativeLayout>  

这是我的输出: enter image description here