在准备视图之前获取视图的高度将始终返回0。无论您使用哪种设备/屏幕,都使用下一个代码来获取正确的大小:
private static void runJustBeforeBeingDrawn(final View view, final Runnable runnable){ final ViewTreeObserver vto = view.getViewTreeObserver(); final onPreDrawListener preDrawListener = new onPreDrawListener() { @Override public boolean onPreDraw() { runnable.run(); final ViewTreeObserver vto = view.getViewTreeObserver(); vto.removeonPreDrawListener(this); return true; } }; vto.addonPreDrawListener(preDrawListener);}在给定的runnable内部,您可以查询视图的实际大小。
或者,可以根据需要使用addOnGlobalLayoutListener而不是addOnPreDrawListener。
另一种方法是使用onWindowFocusChanged(并检查hasFocus ==
true),但这并不总是最好的方法(仅用于创建简单视图,而不用于动态创建)
编辑:替代runJustBeforeBeingDrawn:https
:http://codingdict.com/questions/111280



