【问题标题】:Libgdx ImageButton padding?Libgdx ImageButton 填充?
【发布时间】:2016-05-01 04:17:25
【问题描述】:

所以我对 libgdx 的 ImageButton 类有这个问题,问题是在 android 中图像不会扩展到按钮的完整大小,而在桌面它会或至少它会更多,所以我不得不问有办法强制图像获取背景(按钮)的大小吗?所以我可以尝试在两个平台上进行相同的可视化。

这是一个屏幕截图,退格按钮是 ImageButton...

编辑:这是代码....

    private void createButtons() {

        ImageButtonStyle ibs = new ImageButtonStyle(buttonD,buttonD_p,buttonD,bsIcon,bsIcon,bsIcon);
        buttonBS        = new ImageButton(ibs); // This is the backspace button

        ....
    }
    private void addButtonsToTable() {
        float pad = 1;
        float BUTTON_SIZE = this.BUTTON_SIZE - pad *3;
        table.top();
        table.center();
        table.add(buttonBS).width(BUTTON_SIZE).height(BUTTON_SIZE).pad(pad);
        table.row();

        ...
    }

【问题讨论】:

  • 您能发布您的确切 GUI 构建代码吗?两个平台上的按钮应该完全相同。您是否使用Table 来显示按钮?
  • 是的,我正在使用一张桌子。当然,当我回到家时,我会发布代码
  • 刚刚发布了代码,谢谢!

标签: java libgdx imagebutton


【解决方案1】:

如果您希望图像成为背景 而不仅仅是一个图标,您应该考虑使用普通的ButtonTextButton 而不是ImageButtonImageButton 应仅用于在其背景中另外 绘制图标的按钮。 ImageButton 用法的一个示例可能是带有“X”(十字)图像的窗口关闭按钮,或带有扬声器图标的音乐切换按钮。

当您需要图像填满整个按钮区域时,将其设置为ButtonStyle#up - 它将成为按钮的背景。 ImageButton#imageUp 只是一个不会以任何方式缩放的图标(默认情况下),因此这可能是您的应用程序在每个平台上的行为不同的原因。

(尽管它仍然不应该,除非您使用不同的资产。)

如果您需要一个图标但仍想使用ImageButton,请考虑在内部它只是一个Button,并在其中一个单元格中添加了一个Image 实例(Button 是一个Table)。您可以使用ImageButton#getImageCell() 访问存储ImageCell 并对其进行修改——例如,强制指定特定的宽度和高度。您可能还想使用ImageButton#getImage() 来更改与Image#setScaling(Scaling) 的缩放。

无论如何,在运行时创建样式很容易出错 - 样式构造函数很大,如果不检查图像按钮样式源,我真的无法猜测哪个可绘制对象绘制了什么。您应该考虑使用 Skin 并使用 JSON 文件定义您的样式(您可以找到一些免费的主题 here)。

【讨论】:

  • 我明白,但我需要背景和图标,这就是我使用 ImageButton 的原因。我真的不需要桌面应用程序,我担心的是在某些 android 设备中,它的行为可能与我的桌面应用程序一样,我也不希望它填满整个区域,我希望它在所有 android 设备中表现相同所以我可以确定没有设备像我的桌面应用程序那样显示它。谢谢你的回答。
  • 那么,如果你想让它填满整个图像,那么使用图标有什么意义呢? ImageButton 在内部只是一个 Button ,其中一个单元格添加了一个 Image 实例(Button 是一个 Table)。您可以使用ImageButton#getImageCell() 访问存储ImageCell 并对其进行修改——例如,强制指定特定的宽度和高度。您可能还想使用ImageButton#getImage() 来更改与Image#setScaling(Scaling) 的缩放。
  • 就像我说的,我不希望图标填充背景,只是为了表现相同。但是,如果它填充整个背景会更容易,我只是在我的图像中添加一个透明填充并完成。它不能只是一个按钮,因为用户可以更改背景颜色和数字颜色(在本例中为图标颜色),所以我可以使用 buttonBS.getImage().setColor(color);和 buttonBS.setColor(color);
  • 我明白了。好吧,您可以使用buttonBS.getImageCell().size(whatever) 在每个平台上强制使用特定大小的图标。不过,我会确保缩放是正确的 - 您可能也想使用 buttonBS.getImage().setScaling(x)(只需将 x 替换为适合您需要的 Scaling,例如 Scaling.fill)。
  • 所以,这成功了buttonBS.getImageCell().size(BUTTON_SIZE);,谢谢!但为什么要使用缩放?
猜你喜欢
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多