【问题标题】:Maintain circle image ratio for button on varying screen resolutions在不同的屏幕分辨率上保持按钮的圆形图像比例
【发布时间】:2012-01-24 18:35:39
【问题描述】:

我有一个带有圆形背景图像 .png 的图像按钮。我在不同分辨率的屏幕上测试它,每个屏幕看起来都不一样。他们中的大多数通过在一维上拉伸来扭曲圆形。

处理这个问题的正确方法是什么?我熟悉最高质量图像所需的 3 个密度级别,但我认为问题在于图像按钮本身或父容器上的布局类型属性。

来自 main.xml 的片段...

<LinearLayout
    android:id="@+id/buttonArea"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical"
    android:padding="30dp">

    <ImageButton
        android:id="@+id/button1"
        android:background="@drawable/button_inactive"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_gravity="center"/>

</LinearLayout>

从 ImageButton 中删除 layout_weight 属性修复了大多数情况,但不是全部。似乎 padding 仍在改变圆的比例。比例类型无效。是不是因为我的图片设置为背景而不是src?

【问题讨论】:

  • 是 layout_weight 还是你选择了 scaleType?这样我就可以为其他用户编辑答案...
  • 我最终都做了,但 layout_weight 是关键。
  • @Entreco - 正在发生的另一件事 - 当我增加容器上的填充时,它再次扭曲了比率。即使使用所有不同的 scaleTypes。 WYSIWYG 编辑器不会正确显示吗?还是这个有更多?
  • 因为我的图片被设置为背景而不是 src,所以 scaleType 不能做任何事情吗?
  • 我总是更喜欢在子节点上设置边距而不是在父节点上设置内边距。此外,将图像设置为背景而不是 src 有效果。我只是不知道什么是最好的。祝你好运

标签: android image android-layout aspect-ratio android-resolution


【解决方案1】:

我认为 ImageButton 中的 android:layout_weight="1" 是造成这种情况的原因。无论屏幕大小如何,它都会使您的 ImageButton 与屏幕大小相同。

尝试删除该属性。如果这不能解决您的问题,请查看android:scaleType 属性

<ImageButton
    android:id="@+id/button1"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:layout_gravity="center"
    android:background="@null"
    android:src="@drawable/button_inactive"
    android:scaleType="centerInside"/>

【讨论】:

  • 抱歉,我必须撤消该复选标记。图像仍然失真。 layout-weight 修复了大多数情况,但不是父容器中的 padding 搞砸了。规模类型似乎没有影响它。难道是因为我的图片设置为背景而不是src?
  • 我修改了答案。如果将背景设置为@null,并将 src 设置为可绘制对象,则可以适当地使用 scaleType="centerInside" 属性
【解决方案2】:

您可以将 ImageView 的 scaleType 属性设置为图像的 one that keeps the aspect ratio。 它们的行为都略有不同,因此您必须使用适合您需求的一种(CenterInside 是一个很好的开始)。

如果这不起作用,您始终可以指定图像的设置高度/宽度(例如 layout_width="128dp)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多