Android LayoutParams使用什么度量单位?

Android LayoutParams使用什么度量单位?,android,android-linearlayout,layoutparams,Android,Android Linearlayout,Layoutparams,我正在使用线性布局,希望设置视图的最大高度。在“正常”情况下,我希望视图使用“wrap_content”。但是,偶尔这种情况可能会将布局推到不需要的大小。当这种情况发生时,我想将高度限制在最大300dp 当布局中的列表超过4个列表项时,我使用以下方法设置视图的大小: LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout); if(list.size() > 4){ LayoutPar

我正在使用线性布局,希望设置视图的最大高度。在“正常”情况下,我希望视图使用“wrap_content”。但是,偶尔这种情况可能会将布局推到不需要的大小。当这种情况发生时,我想将高度限制在最大300dp

当布局中的列表超过4个列表项时,我使用以下方法设置视图的大小:

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);
}
回顾这篇文章,我对所采用的度量单位一无所知。在这种情况下,测量单位是什么(dp、sp、px等)

运行测试时,即使将值设置为100,列表也会超过所需的高度


请根据您链接的文档提供建议:像素。看

宽度,匹配父项、包裹内容或固定大小(以像素为单位)

尽管您正在使用的函数没有任何明确的文档,但这意味着它使用的文档与参数最多的函数相同。函数本身可能如下所示:

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

i、 它只是用一个默认值调用3参数版本。

正如David所说,通过代码设置LayoutParams是以像素为单位设置的。
您可以使用中的代码将所需的dp转换为px。

如果您遇到问题,这里是完整的导入类-@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);
    }
}

因此,在阅读文档时,方法public LinearLayout.LayoutParams(int-width,int-height)public LinearLayout.LayoutParams(int-width,int-height,float-weight)使用相同的描述:使用指定的宽度、高度和重量创建一组新的布局参数。参数宽度宽度,匹配\u父项、换行\u内容或以像素为单位的固定大小高度,匹配\u父项、换行\u内容或以像素为单位的固定大小权重p。LinearLayout.LayoutParams(int-width,int-height)函数是3参数版本的重载函数,可能如下所示:(编辑:添加到post,因为注释不格式化代码)int 300dpInPixels=convertdptopix(300);