我想在屏幕上显示一个小图片。我希望它是一个小广场。使用下面的代码,它显示为一个长扁平矩形。我附上了下面的图片。
java代码
ImageView q1Image = (ImageView)findViewById(R.id.q1Image);
q1Image.setScaleType(ScaleType.FIT_XY);
xml代码
<TableRow
android:id="@+id/row4"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1" >
<ImageView
android:id="@+id/q1Image"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_weight=".1"
android:textSize="8sp"
android:gravity="center_horizontal" />
修改
如果我将宽度和高度分别设置为50dp
,则图像会变大但仍然是一个看起来很扁平的矩形。
答案 0 :(得分:17)
您的图片缩放错误。以下是所有尺度类型:
顶行(l-r)中心,centerCrop,centerInside。
下排(l-r):fitCenter,fitStart,fitEnd,fitXY。
您可能需要fitCenter
:
q1Image.setScaleType(ScaleType.FIT_CENTER);
答案 1 :(得分:4)
FIT_XY会将图像拉伸到适合所有的ImageView。 如果使用ImageView
,请使用缩放类型fitCenter通过将图像置于中心来保留纵横比q1Image.setScaleType(ScaleType.FIT_CENTER);
参考http://developer.android.com/reference/android/widget/ImageView.ScaleType.html 其他选择。
答案 2 :(得分:1)
如果没有完整的XML布局,这只是推测,但看到您似乎没有通过更改比例类型来解决问题,这里有一些其他建议:
如果layout_weight
的{{1}}为零,会不会更好?
您是否在ImageView
上指定了android:stretchColumns
?
图像看起来像是在拉伸以匹配下面文字的宽度。你的桌子里有几列?看起来其他行中的文本在第0列(与第一行中的图像一样),第一行中的文本在第1列中。如果要将列0留空其他行,则需要在文本视图中指定TableLayout
。