我使用
初始化imageview iv = (ImageView)findViewById(R.id.ivPic);
之后相机拍摄了照片。在onActivityResult(int requestCode, int resultCode, Intent data)
方法中,我正在执行以下操作来设置ImageView。
Bitmap bmpEmail = BitmapFactory.decodeFile(out.getAbsolutePath());
iv.setImageBitmap(bmpEmail);
我只是一个空白的屏幕。也就是应用程序启动时屏幕的布局如下:
在拍摄照片之后,屏幕变得扭曲,我不知道为什么会发生这种情况。
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>
答案 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
正确格式化。