2013-06-29 63 views
15

我正在使用線性佈局並希望設置視圖的最大高度。在「正常」情況下,我希望視圖使用「wrap_content」。但是,有時候這種情況可能會將佈局推向不合適的大小。發生這種情況時,我想將高度限制在最大300dp。LayoutParams使用什麼單位?

LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout); 
if(list.size() > 4){ 
    LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);       
    listLayout.setLayoutParams(params); 
} 

回顧documentation給我留下任何線索,以所施加的度量單位:

我已經使用以下時,在佈局列表超過4個列表項設置視圖的大小。這種情況下的度量單位是多少(dp,sp,px,...)?

運行測試,即使將值設置爲100,列表中的列表超出了所需的高度。

請指教

回答

17

根據您鏈接的文檔:像素。見this function

寬度,即使你使用沒有任何明確的文檔的功能,它被暗示它要麼MATCH_PARENT,WRAP_CONTENT或像素

固定大小與最多參數的功能使用相同的文檔。功能本身可能看起來像:

LinearLayout.LayoutParams(int width, int height) { 
    this(width, height, /*some default value*/); 
} 

即它只是調用默認值的3參數版本。

+0

所以在閱讀文檔的方法公開LinearLayout.LayoutParams(INT寬度,高度INT) 公共LinearLayout.LayoutParams (int width,int height,float weight) 使用相同的描述: 用指定的寬度,高度和重量創建一組新的佈局參數。 參數 寬度\t的寬度,或是MATCH_PARENT,WRAP_CONTENT或以像素 高度\t高度固定的大小,無論是MATCH_PARENT,WRAP_CONTENT或以像素爲單位 重量\t重量 –

+0

燁固定大小。 LinearLayout.LayoutParams(int width,int height)函數是3參數版本的重載,可能看起來像這樣:(編輯:添加到帖子,因爲註釋不會格式化代碼) –

1

正如David所說,通過代碼設置LayoutParams以像素爲單位設置。 您可以使用this thread中的代碼將所需的dp轉換爲px。

0

下面是與進口,如果有問題你滿級的 - @ Pierre.Vriens

//usage: int 300dpInPixels = util.convertDpToPixel(300); 

import android.content.res.Resources; 
import android.util.DisplayMetrics; 

public class utils { 
    public static int convertDpToPixel(float dp){ 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     float px = dp * (metrics.densityDpi/160f); 
     return Math.round(px); 
    } 
} 
+0

我不明白它 –

+0

他他的身高需要使用300dp。使用此功能轉換爲像素... – rahaprogramming

+0

int 300dpInPixels = convertDpToPixel(300); – rahaprogramming

相關問題