首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用setX和setY?

为什么使用setX和setY?
EN

Stack Overflow用户
提问于 2018-08-03 21:03:38
回答 2查看 628关注 0票数 1

好的,现在我知道这个问题似乎有一个明显的答案,但是setX和setY函数到底有什么问题,以及为什么它们不能按预期的那样工作。当应用程序运行到特定的positions.They时,我试图动态地移动视图,它在我的测试设备上使用mdp很好,但是当我使用不同密度的value.The Y轴时,所有的事情都会发生变化。不,这不是一个填充或保证金问题,我甚至试图将它除以context.getResources().getDisplayMetrics().density;,以考虑密度的差异,但它也不起作用。最后,我在这个帖子中使用了这个答案,它起了作用,但我在其他密度设备上仍然存在问题。这就是它所建议的:

代码语言:javascript
复制
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应该把它变成easier...right?如果我只是说没有道理,你可以为我解决这件事,我会非常感激它,我最近尝试了一切!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-12 00:41:00

因此,经过大量的研究,我终于解决了这个问题。我所拥有的是一个GridView和几个LinearLayout,它们都封装在一个relativeLayout中,我用gridView获取了GridView中一个单元格的坐标,这样我就可以在它上面放置视图,出于某种原因,Y轴总是有一个固定的值差异,在不同的设备密度下,最终把GridView放在一个relativeLayout中,所以它是唯一的子程序,并且使用getX() getY()来获取视图的直链内部的坐标,结果就是我想要的结果,我甚至不需要计算不同的密度屏幕。希望这对可能遇到同样问题的人有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 21:19:10

这说明了如何以编程方式将dp转换为px。

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

代码语言:javascript
复制
// 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...

希望这能帮上忙!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51680055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档