LinearLayout.LayoutParams如何使用dip …?

我试图将我的LinearLayout的高度设置为45。

如何在扩展LinearLayout时做到这一点?

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

Solutions Collecting From Web of "LinearLayout.LayoutParams如何使用dip …?"

解决这类问题的最好办法是在值下创build一个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); 

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

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

希望它有助于^^

可能最好的方法是用XML来指定它。 将正常的LinearLayout标签replace为您创build的类以扩展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" > .... 

在这里看到更多的信息。