如何以编程方式使用“ dp”设置边距?

时间:2019-02-09 20:14:03

标签: java android android-studio

我正在尝试以编程方式创建设计。我正在使用LayoutParams来获取详细信息,我想设置Margin,我看到了... setMargins(0,100,0,100),但是我想像这样设置'dp':

<TextView
          ...
          android:layout_marginLeft="10dp"
          .../>

如何用'dp'设置边距?

1 个答案:

答案 0 :(得分:1)

如果您需要使用父级布局,那么首先要了解它:

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(this);

如果是线性,请确保将“相对”替换为“线性”以获得正确的layoutParams。现在,您可以使用:

layoutParams.setMargins(i1,i2,i3,i4);

所有值都应以像素为单位,因此,如果您需要一种方法,则应将dp转换为px。请随意使用我的:

public int dpToPx(Context context, float dp) {
    return Math.round(dp * getDisplayMetrics(context).density);
}

现在只需将layoutParams设置为子视图:

textView.setLayoutParams(layoutParams);