Libgdx ImageButton 填充?

Libgdx ImageButton padding?

所以我在使用 libgdx 的 ImageButton class 时遇到了这个问题,问题是在 android 中图像没有扩展到按钮的完整大小,在桌面上它做或至少做更多,所以我不得不问是否有办法强制图像获得背景(按钮)的大小?所以我可以尝试在两个平台上进行平等的可视化。

这是一个屏幕截图,后退 space 按钮是 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();

        ...
    }

如果您希望图像成为 背景 而不仅仅是图标,您应该考虑使用纯 ButtonTextButton 而不是 ImageButtonImageButton 应仅用于在其背景上另外 绘制图标的按钮。 ImageButton 用法的示例可以是带有 "X"(十字)图像的 window 关闭按钮,或带有扬声器图标的音乐切换按钮。

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

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

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

无论如何,在运行时创建样式可能容易出错 - 样式构造函数非常庞大,老实说,如果不检查图像按钮样式源,我无法猜测哪个可绘制对象绘制了什么。您应该考虑使用 Skin and define your styles with JSON files (you can find some free themes here).