2017-08-13 53 views
0

我遇到与视图定位一个奇怪的问题..查看定位

的代码,我大致像这样:

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

但尽管如此,stangely足够的观点并表示在适当的位置获取模拟器,但在实际设备上没有, 我意思是没有显示,或者显示在FrameLayout的边缘。

我已经与我的Nexus 5手机(LG,API 23) 也具有相同的结果测试它在三星7J(API 25) ,正如我提到的,当我测试它与模拟器 相同的API级别,事情按预期工作。 我想出的唯一“解决方案”就是动画(),它确实把它放在我想要的地方,但它感觉不对。

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

回答

0

以及一些试验和错误运行后,我来到了一个解决方案, 看来,我需要的LayoutParams添加到CustomView

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

其中Gravity.NO_GRAVITY是,所做的事情不同之处,现在将视图添加到正确的位置,使用简单的setX和setY方法..