我遇到了一个关于视图定位的奇怪问题..
我的代码大致是这样的:
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级别在模拟器上测试它时,一切都能正常工作。我想出的唯一的“解决方案”是动画()视图,它确实将它放在我想要的位置,但它感觉就是不正确。
有没有人遇到过这种情况?我该怎么办?
发布于 2017-08-14 16:21:12
经过一些试验和错误运行,我找到了一个解决方案,似乎需要将LayoutParams添加到CustomView中
v.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.NO_GRAVITY));使用简单的setX和setY方法将视图添加到正确的位置,其中Gravity.NO_GRAVITY是造成差异的原因。
https://stackoverflow.com/questions/45659379
复制相似问题