【问题标题】:ImageButton Stretching Background ImageImageButton 拉伸背景图片
【发布时间】:2013-02-28 15:47:24
【问题描述】:

我正在尝试创建一个没有边框的 ImageButton,但我遇到了图像按钮大小的问题。

使用 Eclipse ADT,我将一个 ImageButton 拖到布局中并选择我的背景图像。图片按钮显示如下:

如您所见,我想去掉背景图像和图像按钮周边之间的边界。为此,我将填充属性设置为 0dp。图像按钮现在看起来像这样:

最后,我将刻度类型设置为 fitXY:

请注意,图像已拉伸,不再是原始图像的大小。 (我希望 ImageButton 的大小与背景图像的大小完全相同。)

这是所有 3 张图片的快照,它们彼此相邻,以使差异更加清晰:

我尝试过调整图像大小、设置最大尺寸属性等,但似乎没有什么能阻止图像按钮拉伸背景图像。

如何防止图像像原来那样拉伸

更新

我也尝试将比例类型设置为矩阵,但发生了以下情况:

【问题讨论】:

    标签: android scale padding imagebutton stretch


    【解决方案1】:

    只需将您的图像设置为android:background 按钮并将layout_heightlayout_width 按钮设置为wrap_content

    【讨论】:

    • 它已经设置为 wrap_content。我猜这是使用 Eclipse ADT 拖动图像按钮时的默认设置。
    • 另外,在您的情况下,您不需要 ImageButton。您可以使用没有文字的简单按钮
    • 我发现这样做的问题是,如果我将简单按钮的背景设置为图像,我将不再在 UI 中获得 click 效果。
    • 在这种情况下,您需要为按下状态和正常状态编写选择器。看mkyong.com/android/android-imagebutton-selector-example
    • 我将采用您的解决方案,因为我决定使用带有选择器的按钮。谢谢!
    【解决方案2】:

    也许这可能会有所帮助,但我也知道从 android 开发中制作不同大小的图像的最佳做法。

    https://developers.google.com/appengine/docs/java/images/overview

    【讨论】:

      【解决方案3】:

      改用ImageView 并将其设置为clickable。将scaleType 设置为matrix(这将导致 ImageView 与其中的图像一样大)。

      ImageButton 的问题在于它添加了导致填充等的背景。

      【讨论】:

      • 我现在试试,谢谢!人们在尝试制作自定义按钮时通常会这样做吗?
      • 是的。您也可以自己覆盖 ImageButton 的背景。例如,将其设为透明色。
      • 我刚刚尝试使用 ImageView,但我现在遇到的问题是,当我单击它时,我没有得到很好的 click(闪烁)效果。我喜欢点击效果,因为它给用户反馈他们按下了一个按钮。
      • 如果您想要那种“闪烁”效果,您将回到 ImageButton 并在您的图像周围添加一些填充。只需尝试在 ImageButton 上设置 'scaleType="matrix"' 看看会发生什么。
      • matrix 做了一些更奇怪的事情 :) 查看我的原始帖子以获取图片
      【解决方案4】:

      你可以设置 android:background="@null"

      【讨论】: