2

我正在制作一个应用程序,我希望能够动态地使用其边距移动视图。我试过用这个:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)cover.getLayoutParams();
params.leftMargin= 470;
params.topMargin= 20;
cover.setLayoutParams(params); (cover is an ImageView)

此代码的问题在于它使用 px 而不是 dp。我还尝试使用 DisplayMetrics 将我的 px 值转换为 dp 但失败了。你能帮助我吗 ?

4

1 回答 1

11

您需要根据 dpi 设置边距 -

DisplayMetrics displayMetrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) MyActivity.this.getSystemService(Context.WINDOW_SERVICE);
        windowManager.getDefaultDisplay().getMetrics(displayMetrics);

现在您可以将边距设置为 -

params.leftMargin = Math.round(470 * displayMetrics.density);
于 2013-09-14T08:53:19.743 回答