在ImageView内对齐大图像而不进行缩放

时间:2012-12-27 17:13:31

标签: android android-layout android-imageview

我试图在ImageView中显示一个大图像(比屏幕宽),我使用矩阵比例类型。

<ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/pizza_intro_test"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:scaleType="matrix" 
        />

但是,我无法在ImageView中对齐图像。我想显示图像的“右侧”部分,但ImageView显示“左”部分。

这是当前状态:

Current state

这是我想要实现的状态:

Desired state

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

尝试将图片视图的重力设置为右侧。

<ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:src="@drawable/pizza_intro_test"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:scaleType="matrix" 
        />

答案 2 :(得分:0)

我通过设置source和destination Rect来做类似的事情。诀窍是在目标Rect上使用负值。这样你就可以在可见画布之外“开始绘制”图像的左侧,并且右侧将在画布上绘制。

目标矩形应该是这样的:

float scale = canvas.getHeight() / (float)bm.getHeight(); 
Rect dest = new Rect(canvas.getWidth()-bm.getWidth()*scale,canvas.getWidth(), canvas.getHeight())

你可以在onDraw()上定义它并与

一起使用
canvas.drawBitmap(bm, null, mDstRect, mPaint);

您无需在XML或代码上设置任何scaleType。

答案 3 :(得分:0)

也许这已经太晚了,但即使我今天遇到了同样的问题并使用以下代码修复了它。

所有对齐/缩放选项都在scaleType属性中。

现在,如果您想将图像与ImageView的开头对齐,请使用 android:scaleType="fitStart"

同样, android:scaleType="fitEnd" 可将其与ImageView的底部对齐。