首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用setX和setY进行视图定位

使用setX和setY进行视图定位
EN

Stack Overflow用户
提问于 2017-08-13 18:29:07
回答 1查看 369关注 0票数 0

我遇到了一个关于视图定位的奇怪问题..

我的代码大致是这样的:

代码语言:javascript
复制
 FrameLayout frame = callback.getFrame();
CustomView v = new CustomView(getActivity());
frame.addView(v);
v.setX(someX);
v.setY(someY);
//go on and do other stuff..

而回调是实现接口的mainActivity,我在其中放置了getFrame()方法,该方法返回在主布局文件中声明的FrameLayout。

我还尝试使用这里提到的另一种方法Set the absolute position of a view

但是,奇怪的是,在模拟器上,视图确实会显示在适当的位置,但在实际设备上,它不会显示,我的意思是不显示,或者显示在FrameLayout的边缘。

我已经用我的nexus5手机(LG,API23)在三星7J (API25)上进行了测试,结果也是一样的,正如我前面提到的,当我用同样的API级别在模拟器上测试它时,一切都能正常工作。我想出的唯一的“解决方案”是动画()视图,它确实将它放在我想要的位置,但它感觉就是不正确。

有没有人遇到过这种情况?我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-14 16:21:12

经过一些试验和错误运行,我找到了一个解决方案,似乎需要将LayoutParams添加到CustomView中

代码语言:javascript
复制
v.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.NO_GRAVITY));

使用简单的setX和setY方法将视图添加到正确的位置,其中Gravity.NO_GRAVITY是造成差异的原因。

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

https://stackoverflow.com/questions/45659379

复制
相关文章

相似问题

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