【发布时间】:2013-05-13 08:04:56
【问题描述】:
当我使用 xml 设置布局参数时,它工作正常。但是当我尝试以编程方式设置布局参数时,它会出错。我哪里失败了?
我需要在我的 LinearLayout 中设置参数,这里是:
<LinearLayout
android:id="@+id/buttons_layout"
android:layout_width="231dp"
android:layout_height="40dp"
android:layout_marginTop="40dp"
android:layout_marginRight="85dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="horizontal"
android:baselineAligned="true"
android:weightSum="603" >
这是我设置参数的代码:
rl = (LinearLayout)findViewById(R.id.buttons_layout);
lp = new RelativeLayout.LayoutParams(pixelsFromDP(231), pixelsFromDP(40));
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
lp.setMargins(0, pixelsFromDP(40), pixelsFromDP(85), 0);
rl.setLayoutParams(lp);
这是我通过 xml 设置参数得到的结果:
这是我通过以编程方式设置参数得到的结果:
方法pixelFromDP返回int值:
public int pixelsFromDP(int pixels){
return (int)(40 * getResources().getDisplayMetrics().density + 0.5f);
}
使用这种方法的原因是 LayoutParams 中的值是以像素为单位的,但我需要 dp 中的值,所以在这种方法中我将 dp 转换为像素取决于屏幕密度
哎呀,我发现了一个错误!天哪,我太傻了:D
通过在方法 pixelFromDP 中将“40”替换为“像素”来解决问题
【问题讨论】:
标签: android android-linearlayout layoutparams