使用setX和setY

时间:2017-08-13 10:29:07

标签: android android-framelayout

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

我的代码大致如此:

 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的边缘。

我用我的nexus 5手机(LG,API 23)进行了测试 也在SAMSUNG 7J(API 25)上 具有相同的结果,正如我所提到的,当我在模拟器上测试它时 相同的API级别,事情按预期工作。 我想出的唯一“解决方案”是动画()放置它的视图 我想要的地方,但感觉不对。

有没有人遇到过这个?我该怎么办?

1 个答案:

答案 0 :(得分:0)

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

v.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.NO_GRAVITY));

其中Gravity.NO_GRAVITY是产生差异的东西,现在使用简单的setX和setY方法将视图添加到正确的位置..