java - 如何以编程方式使用 'dp' 设置边距?

标签 java android android-studio

我正在尝试以编程方式创 build 计。我正在使用 LayoutParams 了解详细信息,我想设置边距,我看到了 ...setMargins(0, 100, 0, 100) 但我想像这样设置“dp”:

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

如何使用 'dp' 设置边距?

最佳答案

好吧,如果你需要 RelativeLayout,那么你首先要了解父布局:

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

如果它是线性的,请确保将 Relative 替换为 Linear 以获得正确的布局参数。现在您可以使用:

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

所有的值都应该以像素为单位,所以如果你需要一个方法,它应该为你将 dp 转换为 px。然后随意使用我的:

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

现在只需将 layoutParams 设置为 subview :

textView.setLayoutParams(layoutParams);

关于java - 如何以编程方式使用 'dp' 设置边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610309/

相关文章:

java - 将图像从 Android 发布到 wcf rest 服务

android - 在我的 Android 手机上开发会不会出问题?

Android studio DateFormat 错误 - 拒绝选择 android.text.format.DateFormat

java - aar 中不包含的类

android - 新开发团队,现有应用,无法查看数据

java - 如何通过.xpath 在 Selenium Web Driver 中查找元素

java - 如何使用 java 在 Windows 中查找当前打开的应用程序(在任务栏上)的名称?

java - 如何在 JBoss AS 上使用 Java Restful Web 服务启用 CORS

java - 将 double[][] 转换为 float[][]

Android HTTPS SNI 支持使用 SSLCertificateSocketFactory