gpt4 book ai didi

android - 为什么要使用 setX 和 setY?

转载 作者:行者123 更新时间:2023-11-29 15:35:22 33 4
gpt4 key购买 nike

现在我知道这个问题似乎有一个明显的答案,但实际上 setX 和 setY 函数出了什么问题,为什么它们不能按预期工作。我正在尝试在应用程序运行到某些位置时动态移动 View 。它们在我使用 mdp 的测试设备上运行良好,但当我使用具有不同密度值的设备时,一切都会发生变化。Y 轴始终偏离一个常数值,并且没有这不是填充或边距问题,我什至尝试将其除以 context.getResources().getDisplayMetrics().density;考虑到密度差异,但它也没有用。最后我在这个 post 中使用了答案它起作用了,但我在使用其他密度设备时仍然遇到问题。这是它的建议:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
//WRAP_CONTENT param can be FILL_PARENT
params.leftMargin = 206; //XCOORD
params.topMargin = 206; //YCOORD
childView.setLayoutParams(params);

所以有人能告诉我为什么会这样吗? setX 和 setY 应该让它更容易......对吧?如果我只是在胡说八道,你能帮我解决这个问题,我将不胜感激,我最近尝试了一切!

最佳答案

This explains how to convert dp to px programmatically

长话短说:您在 View 对象上设置的每个数值(在 xml 中可以表示为 dp 值)在您以编程方式设置时都表示为原始像素。以下代码 fragment 告诉您如何将 dp 转换为原始像素:

// The gesture threshold expressed in dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;

// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);

// Use mGestureThreshold as a distance in pixels...

希望对您有所帮助!

关于android - 为什么要使用 setX 和 setY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680055/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com