碰到一个怪现象
我想动态调整layout的高度
在xml里面写了个初始值 android:layout_height="66dp"
然后运行的时候想让它变化
却发现如果设置
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 66);
这样的,倒是可以调整高度啦,但是却比原来的缩短不少
如果上面的改成0x66就跟原来的高度差不多
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 0x66);但0x66dp却不能写在xml里,类似这样 android:layout_height="0x66dp"<----报错到底是什么原因?
我想动态调整layout的高度
在xml里面写了个初始值 android:layout_height="66dp"
然后运行的时候想让它变化
却发现如果设置
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 66);
这样的,倒是可以调整高度啦,但是却比原来的缩短不少
如果上面的改成0x66就跟原来的高度差不多
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 0x66);但0x66dp却不能写在xml里,类似这样 android:layout_height="0x66dp"<----报错到底是什么原因?
xml设置和代码设置的差异在哪里?
而XML中写的是单位密度
这两个需要转换
public static int Dp2Px(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
public static int Px2Dp(Context context, float px) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}