2016-05-16 223 views
-1

我使用RecyclerView将ImageButtons逐个添加到GridLayout中。我的应用程序侦听传入图像和字符串以标记按钮。如何在GridLayout中设置按钮的大小

我需要能够将按钮的大小设置为设定值(如50x50dp)。下面的图像显示了我的图像是如何进来的,并且我意识到该行中的每个点不会被填满,因为某些图像比其他图像更大,并且不会留下其他图像出现的空间。

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

回答

1

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

这可以在XML来实现与Android:adjustViewBounds = “真”

或与imageButton.setAdjustViewBounds代码(真正的); - 我将在视图初始化后立即调用它。

就我个人而言,我更喜欢尽可能在XML中设置这些东西,因为这意味着我稍后有更少的代码来尝试理解。

无论采用哪种方式 - 您都可以将ImageButton的大小设置为值和值域文件中的值,以便操作系统为您处理这些内容。再说一遍,更少的代码是更好的IMO。如果按钮总是一个尺寸,您可以将它们设置在布局项目本身中。

+1

谢谢它工作:)原来我是实际上是在纠正整个时间,但这并不是问题,为什么按钮更换/删除对方。我做了另一个帖子 - > http://stackoverflow.com/questions/37284051/android-buttons-dont-show-up-or-remove-each-other-in-gridlayout但是还是非常感谢你这样做和此解决方案确实工作:) –

0

您可以尝试类似下面的代码。此代码在类似情况下适用于我。

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); 
} 
+0

我总是收到错误“无法解析方法getScaledInstance”,是因为我在片段中使用了这个。我也收到错误“无法解析符号SCALE_SMOOTH” –

+0

上面的代码是针对Java桌面应用程序的,您可以使用代码来指导您解决Android的问题。 – josemr

+0

我看,你有没有机会知道Android的“getScaledInstance”和“SCALE_SMOOTH”的替代品? :)谢谢 –