无法在android中设置imageview

时间:2013-10-11 03:01:09

标签: android android-layout android-imageview

我使用

初始化imageview

iv = (ImageView)findViewById(R.id.ivPic);

之后相机拍摄了照片。在onActivityResult(int requestCode, int resultCode, Intent data)方法中,我正在执行以下操作来设置ImageView。

Bitmap bmpEmail = BitmapFactory.decodeFile(out.getAbsolutePath());
iv.setImageBitmap(bmpEmail);

我只是一个空白的屏幕。也就是应用程序启动时屏幕的布局如下: enter image description here

在拍摄照片之后,屏幕变得扭曲,我不知道为什么会发生这种情况。

enter image description here

PS:我增加了第二张图片的大小,以便按钮可见,如果你看到按钮的大小减少了很多,而Imageview占位符似乎占用了大部分屏幕空间而没有显示imageview就是这样。

我在下面发布了我的XML:

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

    <ImageView
        android:id="@+id/ivPic"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_gravity="center" android:src="@drawable/ic_launcher" 
        android:layout_weight="60"/>

    <ImageButton
        android:id="@+id/ibPic"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_gravity="center"  android:src="@drawable/ic_launcher"
        android:layout_weight="20" />

    <Button
        android:id="@+id/bPic"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_gravity="center" android:text="Email Pic"
        android:layout_weight="20" />

</LinearLayout>

3 个答案:

答案 0 :(得分:0)

// try this
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="center"
              android:orientation="vertical">
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:gravity="center"
            android:layout_weight="1">
        <ImageView
                android:id="@+id/ivPic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher"/>
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
        <ImageButton
                android:id="@+id/ibPic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher"/>
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
        <Button
                android:id="@+id/bPic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Email Pic"/>
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

由于Ravi bhatt怀疑这是位图图像大小的问题。我使用了大小:

bmpEmail.getHeight()&amp; bmpEmail.getWidth()

使用以下方法获取ImageView大小:

ViewTreeObserver vto = iv.getViewTreeObserver();
                vto1.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
                    public boolean onPreDraw() {
                        Log.d("Test", "Height: " + iv.getMeasuredHeight() + " Width: " + iv.getMeasuredWidth());
                        return true;
                      }
                  });

最后使用以下

缩小图像
Bitmap scaled = Bitmap.createScaledBitmap(bmpEmail, 512, 540, true);
iv.setImageBitmap(scaled);

现在显示效果很好。

答案 2 :(得分:0)

这是因为您的解码位图大小很大而ImageView的高度为wrap_content,因此大小会增加。提供修复大小或使用layout_weight正确格式化。