按代码设置dp单位的视图高度?

时间:2011-07-04 14:52:20

标签: java android android-layout

我想知道是否可以将我的java代码中LinearLayout的高度从100dp更改为200dp?

3 个答案:

答案 0 :(得分:5)

是。

(int) TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP, 2, this.getResources()
        .getDisplayMetrics()));

您也可以在值中添加维度并从资源中获取。

Dimension values

答案 1 :(得分:1)

试用本教程http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations

它可以帮助您将dp转换为px。您可以在LayoutParams中设置此px值。希望它有用

答案 2 :(得分:0)

// The gesture threshold expressed in dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;

// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);

// Use mGestureThreshold as a distance in pixels...

DisplayMetrics.density字段指定根据当前屏幕密度必须用于将dp单位转换为像素的比例因子。在中密度屏幕上,DisplayMetrics.density在高密度屏幕上等于1.0;,在额外的高密度屏幕上等于1.5;,等于2.0;且低-density屏幕,它等于0.75。此数字是您应该按顺序乘以dp单位以获取当前屏幕的实际像素数的因子。 (然后添加0.5f以将图形舍入为最接近的整数,转换为整数时。)有关详细信息,请参阅DisplayMetrics class

来自android documentation的回答,因此您无需搜索内容