我在约束布局中从xml添加了2个视图,现在我需要在从xml创建的视图下面添加新视图
这是我添加新视图的方法
//leftMargin calculation
int topMargin= Utils.pxToDp(20);
ImageView imageView = new ImageView(this);
imageView.setId(View.generateViewId());
constraintLayout.addView(imageView);
ConstraintSet set = new ConstraintSet();
set.clone(constraintLayout);
set.constrainWidth(imageView.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.connect(imageView.getId(), ConstraintSet.TOP, eventsViewPager.getId(), ConstraintSet.BOTTOM, topMargin);
我在这里定义了边距20dp
,但它只是在视图上添加了一条细线,如果我使用400左右的边距,那么它会给我想要的结果,转换时一定有一些错误可能是我在这里制作。
这就是我将值从px
转换为dp
public static int pxToDp(int px){
return (int) (px / Resources.getSystem().getDisplayMetrics().density);
}
答案 0 :(得分:1)
我认为您应该将DP转换为像素,而不是反之亦然,请使用TypedValue
,如下所示:
int marginTopDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20,
getResources().getDisplayMetrics());