使用 setX 和 setY 查看定位
View positioning using setX and setY
我遇到了一个关于视图定位的奇怪问题..
我的代码大致是这样的:
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(),returns 在主布局文件中声明的 FrameLayout。
我也尝试过使用这里提到的不同方法Set the absolute position of a view
但是,在模拟器上还是很奇怪,视图确实显示在正确的位置,但在实际设备上却没有,
我的意思是不显示,或者显示在 FrameLayout 的边缘。
我已经用我的 nexus 5 phone, (LG, API 23) 测试过了
同样在三星 7J 上 (API 25)
结果相同,正如我提到的,当我在模拟器上测试它时
同样的 API 水平,一切都按预期工作。
我想出的唯一 "Solution" 是动画()确实放置它的视图
我想要的地方,但感觉不对。
有人遇到过这种情况吗?我该怎么办?
经过反复试验,我找到了解决方案,
看来我需要将 LayoutParams 添加到 CustomView
v.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.NO_GRAVITY));
Gravity.NO_GRAVITY 是造成差异的地方,现在使用简单的 setX 和 setY 方法将视图添加到正确的位置..
我遇到了一个关于视图定位的奇怪问题..
我的代码大致是这样的:
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(),returns 在主布局文件中声明的 FrameLayout。
我也尝试过使用这里提到的不同方法Set the absolute position of a view
但是,在模拟器上还是很奇怪,视图确实显示在正确的位置,但在实际设备上却没有, 我的意思是不显示,或者显示在 FrameLayout 的边缘。
我已经用我的 nexus 5 phone, (LG, API 23) 测试过了 同样在三星 7J 上 (API 25) 结果相同,正如我提到的,当我在模拟器上测试它时 同样的 API 水平,一切都按预期工作。 我想出的唯一 "Solution" 是动画()确实放置它的视图 我想要的地方,但感觉不对。
有人遇到过这种情况吗?我该怎么办?
经过反复试验,我找到了解决方案, 看来我需要将 LayoutParams 添加到 CustomView
v.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.NO_GRAVITY));
Gravity.NO_GRAVITY 是造成差异的地方,现在使用简单的 setX 和 setY 方法将视图添加到正确的位置..