LinearLayout.LayoutParams如何使用dip ...?

时间:2011-05-18 22:53:12

标签: android

我正在尝试将LinearLayout的高度设置为45度。

如何在延长LinearLayout

时执行此操作

现在我刚刚做了:LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 45);

3 个答案:

答案 0 :(得分:48)

解决此类问题的最佳方法是在值下创建一个dimens.xml文件并在其中放入dip值,然后在代码中从该文件中提取维度。这就是资源的用途,对吗? =)

以下是dimens.xml

的示例
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="about_image_bottom">0dp</dimen>
</resources>

这就是你可以在代码中解决它的方法:

RelativeLayout.LayoutParams iv_params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
iv_params.setMargins(0, 0, 0, (int) getResources().getDimension(R.dimen.about_image_bottom));

然后将参数设置为您需要的任何对象,在我的情况下设置为ImageView iv:

iv.setLayoutParams(iv_params);

答案 1 :(得分:16)

您可以使用DisplayMatrics并确定屏幕密度。像这样:

int pixelsValue = 5; // margin in pixels
float d = context.getResources().getDisplayMetrics().density;
int margin = (int)(pixelsValue * d);

希望它有所帮助^^

答案 2 :(得分:-1)

最好的方法可能是在XML中指定它。将正常的LinearLayout标记替换为您创建的类,以扩展XML标记中的LinearLayout:

<com.example.MyLinearLayout 
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent" 
              android:layout_height="45dp" 
              android:orientation="vertical" >
 ....

有关详细信息,请参阅here