2016-05-16 96 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」的替代品? :)謝謝 –