工作解决方案:
创建两个虚拟视图:
<View android:id="@+id/top" android:layout_height="0dp" android:layout_width="match_parent" android:layout_alignParentTop="true" /><View android:id="@+id/bottom" android:layout_height="0dp" android:layout_width="match_parent" android:layout_alignParentBottom="true" />
现在,您应该调用
getLocationOnScreen(int[])这两个视图以接收它们的位置。此函数返回2个整数的数组。第一个是x,第二个是y。我们只需要y。还要注意,只有在创建所有视图并
onCreate退出方法之后,才返回正确的值。
我在从viewpager调用的常规片段上测试了此代码。
代码在
onCreateView我的片段方法中。我仍然必须使用a
postDelayed来获取正确的值。
final View top = (View) view.findViewById(R.id.top); final View bottom = (View) view.findViewById(R.id.bottom); new Handler().postDelayed(new Runnable() { @Override public void run() { int topLoc[] = new int[2]; top.getLocationOnScreen(topLoc); int BottomLoc[] = new int[2]; bottom.getLocationOnScreen(BottomLoc); Log.d(Constants.debug, "topY: "+ topLoc[1]+" BottomY:" + BottomLoc[1]); } },4000);
我有一个Nexus 4。
在常规模式下(状态栏和显示的软按钮):
07-05 02:28:23.367 565-565/com.torcellite.xx D/xx: topY: 50 BottomY:1182
在全屏模式下(不显示状态栏或软按钮):
07-05 02:29:17.360 707-707/com.torcellite.xx D/xx: topY: 0 BottomY:1280
您现在要做的就是减去。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)