当前位置: 首页 > 知识库问答 >
问题:

如何在Android中使用dp大小设置边距

燕青青
2023-03-14

我想通过编程方式设置视图的边距,我应该为margin\u top设置50dp,我使用此代码

ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(searchView.getLayoutParams());
                    marginParams.setMargins(0, 75, 0, 0);
                    CoordinatorLayout.LayoutParams layoutParams = new CoordinatorLayout.LayoutParams(marginParams);
                    searchView.setLayoutParams(layoutParams);

但在这段代码中,设置为50px!我怎么能设置这个50dp,而不是px?!

共有3个答案

司空温书
2023-03-14
public static int dp(int px) {
    return (int) (px * Resources.getSystem().getDisplayMetrics().density);
}
int margin = dp(50);
苏昊英
2023-03-14

对于dimens.xml:

context.getResources().getDimensionPixelSize(R.dimen.view_height);

对于harcoded值:

int height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50,
               getContext().getResources().getDisplayMetrics()); 
太叔飞翰
2023-03-14

你必须转换它:

final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
 类似资料:
  • 在这个,这个和这个线程,我试图找到一个答案,如何设置一个单一视图的边距。不过,我在想是不是没有更简单的方法。我将解释为什么我不想使用这种方法: 我有一个扩展按钮的自定义按钮。如果背景设置为默认背景以外的其他内容(通过调用或),我希望边距为0。如果我把这个叫做: 我想让边距重置为-3dp(我已经在这里阅读了如何从像素转换为dp,所以一旦我知道如何设置px中的边距,我可以自己管理转换)。但是,由于这是

  • 问题内容: 我想设置in 的宽度和高度。将不存在。它是在这里创建的: 它被放置在这里: 所以基本上我所说的方法很多次,并填写我与封闭在。我需要将此高度设置为DP而不是像素,以便在所有设备上看起来都一样!!! 问题答案: 您需要将值转换为dps,可以使用以下函数进行操作: 然后,要将大小设置为px值,可以执行以下操作: (更改您所在的容器) 编辑:Kotlin版本 转换成Px的函数可以这样写在kot

  • 问题内容: 基本上,我在XML内有此功能,但是我必须在代码内重新创建它。我该怎么做? 我可以使用它来设置文本大小,但是layout_width和height呢? 有没有办法告诉代码使用DP单元而不是像素?还是将DP转换为像素的转换功能? 问题答案: 提取:

  • 问题内容: 我尝试将大小设置为零或在Java中删除打印文档的边框。它始终具有标准的白色边框。 这是我打印JPanel和一些组件的功能: 我正在使用Adobe PDF打印机,因为这里没有任何打印机。有什么建议? 问题答案: 使用带有参数的PrinterJob.setPrintable()版本。 在PageFormat中,设置纸张的可成像区域没有边框(x = 0,y = 0,width =纸张的宽度,

  • 问题内容: 我已经读过有关限制目录大小的信息-例如创建大文件,格式化,装入等等。但这一切都非常复杂。是否存在实用程序或其他对现有目录设置限制的工具? 问题答案: 配额基于文件系统,但是您始终可以创建虚拟文件系统,并使用usrquota和/或grpquota标志将其安装在特定(空)目录上。 步骤将为: 创建安装点 创建一个充满/ dev / zero的文件,其大小足以达到您要为虚拟文件系统保留的最大

  • 我有一个Grails 2.3。X项目,除非使用命令行参数指定更多堆栈大小,否则无法编译。目前这很好,但每次我第一次构建项目时都需要导出/设置JVM选项。此外,刚开始项目的开发人员总是会遇到这个问题,所以我希望它成为签出版本控制的代码的一部分。 有没有办法在Grails 2.3中设置stacksize(-Xss)JVM选项。X BuildConfig? P、 Xss JVM选项是文档较少的选项之一。