【问题标题】:Android image scaling and alignmentAndroid图像缩放和对齐
【发布时间】:2011-05-08 11:59:44
【问题描述】:

我试图在保持其纵横比的同时显示缩放的图像,但同时将其与底部对齐。

使用 android:scaleType="FitXY" 会使图像垂直和水平居中,因此不会与底部对齐。 使用“FitEnd”会导致图像与右下角对齐,因此它不会水平居中。

有没有办法解决这个问题?也许使用一些矩阵来缩放它(scaleType="matrix")?

编辑:澄清一下我到底想要什么......

我有一个 ImageView,我无法更改其布局(位置、大小、重力等)。我想加载一个位图作为其源图像,但将该位图缩放到 ImageView 的大小(保留位图的纵横比),然后与 ImageView 的底部对齐。

编辑:在尝试了我能想到的一切(以及这里建议的一切)之后,我们最终将 ImageView 子类化并在 onDraw 中自己进行缩放/平移。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    尝试使用android:scaleType="centerInside" 而不是fitXY


    在 Blrfl Labs 应用程序中使用布局来缩放图像以适应布局为其提供的区域,而不会增加纵横比:

        <ImageView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1.0"
                android:gravity="center"
                android:src="@drawable/blah_blah_blah"
                android:scaleType="centerInside"
                android:adjustViewBounds="false"
        />
    

    【讨论】:

    • centerInside 不会缩放图像,只是居中
    • 不根据文档:“统一缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)都等于或小于相应的尺寸视图(减去填充)。”我在应用程序中成功使用它;实际布局添加到上面的答案。
    • 似乎 centerInside 只是缩小,而不是放大。你可以试试 fitCenter,它对我有用。
    【解决方案2】:

    你可以使用

    android:layout_centerHorizontal="true"
    android:scaleType="fitEnd"
    

    如果您的 ImageViewRelativeLayout 内。

    【讨论】:

      【解决方案3】:

      未经测试,但尝试添加:

      android:layout_gravity="bottom|center_horizontal"
      

      到您的 ImageView 以及 FitXY 缩放。

      【讨论】:

      • 很遗憾,我无法更改 ImageView 的大小和位置。我想要的是加载的图像被缩放然后粘在图像的底部。
      • 这就是 layout_gravity 的作用。它会影响容器内图像的重力,实际上不会改变容器本身的位置。
      • 是的,但是所有 layout_ 属性都是从放置 View 的布局“继承”的。具体来说,如果图像在 LinearLayout 中,这将起作用,但如果它在 RelativeLayout 中,则不会。但是,现在我考虑了一下,也许我可以添加一个包装它的 LinearLayout - 这可能会解决它。
      猜你喜欢
      • 2014-12-14
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多