【问题标题】:How to set size of buttons in GridLayout如何在 GridLayout 中设置按钮的大小
【发布时间】:2016-05-18 02:48:46
【问题描述】:

我正在使用 RecyclerView 一次将一个 ImageButtons 添加到 GridLayout。我的应用侦听传入的图像和字符串以标记按钮。

我需要能够将按钮的大小设置为一个设定值(例如 50x50dp)。下面的图片显示了我的图片是如何进入的,我意识到行没有被填满,因为一些图像比其他图像更大,没有为其他图像留出空间。

有没有办法可以在传入的 ImageButtons 中设置它?我在哪里设置这些参数?在我的 RecyclerViewAdapter 中?

【问题讨论】:

    标签: java android button gridview mobile


    【解决方案1】:

    您可能想尝试将 adjustViewBounds 设置为 true。

    这可以通过 android:adjustViewBounds="true" 在您的 XML 中完成

    或在代码中使用 imageButton.setAdjustViewBounds(true); - 我会在视图初始化后调用它。

    我个人更喜欢尽可能在 XML 中设置这些内容,因为这意味着我以后尝试理解的代码更少。

    无论哪种方式 - 您都可以将 ImageButton 的大小设置为 value 和 value-land 文件中的值,以便操作系统为您处理这些事情。同样,更少的代码是更好的 IMO。如果按钮始终是一种尺寸,您可以在布局项本身中设置它们。

    【讨论】:

    • 谢谢它的工作:) 结果我实际上一直在做正确的事情,但这不是按钮相互替换/移除的问题。我又发了一篇文章 --> stackoverflow.com/questions/37284051/… 但仍然非常感谢你这样做,这个解决方案确实有效:)
    【解决方案2】:

    您可以尝试以下代码。这段代码在类似的情况下对我有用。

    public Image resizeImageIcon(Image img)
    {
        int w;
        int h;
        if(img.getWidth(null) >= img.getHeight(null))
        {
            w = ((50/img.getWidth(null))*img.getWidth(null));
            h = ((50/img.getWidth(null))*img.getHeight(null));
        }
        else
        {
            w = ((50/img.getHeight(null))*img.getWidth(null));
            h = ((50/img.getHeight(null))*img.getHeight(null));
        }
    
        return img.getScaledInstance(w, h, Image.SCALE_SMOOTH);
    }
    

    【讨论】:

    • 我不断收到错误“无法解析方法 getScaledInstance”,是因为我在 Fragment 中使用它。我也收到错误“无法解析符号 SCALE_SMOOTH”
    • 以上代码是针对Java桌面应用程序的,您可以使用该代码指导您找到适用于Android的解决方案。
    • 我明白了,你有没有机会知道 Android 的“getScaledInstance”和“SCALE_SMOOTH”的替代品? :) 谢谢
    • 你可以尝试将上面的代码和下面的答案结合起来stackoverflow.com/questions/10413659/…
    猜你喜欢
    • 2016-09-12
    • 2012-07-24
    • 2013-03-01
    • 1970-01-01
    • 2011-02-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多