【问题标题】:Align large image inside the ImageView without scaling在 ImageView 内对齐大图像而不缩放
【发布时间】:2012-12-27 17:13:30
【问题描述】:

我试图在 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 显示“左”部分。

这是当前状态:

这是我想要达到的状态:

【问题讨论】:

    标签: android android-layout android-imageview


    【解决方案1】:
    【解决方案2】:

    尝试将图像视图的重力设置为正确。

    <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" 
            />
    

    【讨论】:

      【解决方案3】:

      我通过设置源和目标 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。

      【讨论】:

      • 你能澄清你的答案吗?你扩展 ImageView 吗?我确实了解您的代码,但我不确定在哪里使用它。
      • 是的,你扩展了 ImageView,将位图保存在本地,重写 onDraw() 方法并使用我提供的代码来绘制位图。
      【解决方案4】:

      也许这为时已晚,但即使我今天也遇到了同样的问题并使用以下sn-p修复了它。

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

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

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

      【讨论】:

      • 图片不再使用 android:scaleType="fitStart" 裁剪。
      • 是的,不会的。您不能定义多个 scaleType。我所做的是以编程方式自己裁剪并设置它。
      猜你喜欢
      • 2013-12-14
      • 2011-07-18
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2012-07-11
      • 2018-07-19
      相关资源
      最近更新 更多