【问题标题】:Android resize ImageView with gravity=LeftAndroid使用重力=左调整ImageView的大小
【发布时间】:2018-10-22 05:11:05
【问题描述】:

我有一个背景上有一个图标的图像视图,而不是为不同尺寸的屏幕生成所有不同尺寸的图标,我只使用一个大的并调整它的大小以适合我想要的大小。

如果我将 layout_height 设置为任何值,android 会自动调整宽度以保持纵横比(这很好),但占位符保持原始宽度,并且新调整大小的图标位于它应该适合的空间的中心

为了演示我拍下这张照片的情况

原始文件中左右图标的尺寸相同

<ImageView
            android:id="@+id/leftThumb"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"
            android:foregroundGravity="left"
            android:src="@drawable/ic_left_thumb" />

        <ImageView
            android:id="@+id/rightThumb"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_right_thumb" />

只设置图像视图的高度,是否可以让它调整大小,保持重力在左边? (如下图所示)

【问题讨论】:

  • 我不明白,你需要什么。您可以发布预期的视图吗?
  • 我希望图像调整大小并与边缘对齐...就像右侧的第二个打印件一样...但是当我调整大小时,它们会与中心对齐(原始大小的中心)然后这个奇怪的间隙出现在图像中(如左侧)
  • 似乎您的可绘制图像在左右两侧有不必要的填充。这就是它不可控的原因。您可以通过裁剪图像来获得新的或删除可绘制的填充。然后您可以获得所需的输出。
  • 我的图像中没有填充...出现此间隙是因为当 android 调整高度时它会调整渲染图像的宽度,但它保持原始宽度大小...所以图像是以水平空间为中心,如果是全尺寸的话,它会适合...我相信没有任何方法可以改变这一点,所以我需要通过其他方式解决它

标签: android image layout resize gravity


【解决方案1】:

这很简单。

根据需要设置您的父布局高度其子高度为“match_parent” 您可以使用“dimen.xml”文件来控制不同尺寸的屏幕尺寸,目前我已将静态值设置为“64dp”android:layout_height="64dp"

<RelativeLayout
        android:background="@color/colorPrimary"
        android:layout_width="match_parent"
        android:layout_height="64dp">
        <ImageView
            android:id="@+id/leftThumb"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:src="@drawable/ic_left_thumb" />

        <ImageView
            android:id="@+id/rightThumb"
             android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_right_thumb" />
</RelativeLayout>

【讨论】:

  • 它不起作用,结果与我在图像视图上设置高度相同...图标被调整大小,但它们不与边缘对齐,它们保持在中心保持错误的边距
  • 首先,我认为您的图标大小存在问题,因为您的屏幕截图表明您的图像本身存在填充(透明)。第二,不要在 imageview 上放置高度,将高度放在它的父级上,这是正确的方法 第三,如果你的 imageView 图像/src 没有任何透明填充,它会自行调整第四次在 imageview 中使用 scaleType 并告诉我它是如何反应的。
  • 请在此处分享您的可绘制图像。让我检查一下。
【解决方案2】:

答案很简单...... ImageView 上有一个属性告诉android在需要缩放图像时如何处理:

android:scaleType

所以我已经正确设置了

<ImageView
        android:id="@+id/leftThumb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="fitStart"
        android:src="@drawable/ic_left_thumb"
        />

    <ImageView
        android:id="@+id/rightThumb"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:scaleType="fitEnd"
        android:layout_alignParentEnd="true"
        android:src="@drawable/ic_right_thumb" />

通过这种方式,不是将图标安装在占位符的中心,而是将调整到边缘

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2015-07-18
    • 2018-02-17
    • 2017-12-26
    • 2017-08-17
    相关资源
    最近更新 更多