在实际开发中,我们很多时候都需要获取控件高度,因为不同的手机厂商设计的手机屏幕大小不一,不由得让我们去手动适配屏幕。然而网上关于获取控件高度的方法一大堆,我这个方法也不是唯一方法。
回归正题,我打算用回调的方式来实现控件的宽高,有兴趣的同学可以试试看。
public class ViewUtil {
public static void getViewWidth(final View view, final OnViewListener onViewListener) {
ViewTreeObserver vto2 = view.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
if (onViewListener != null) {
onViewListener.onView(view.getWidth(), view.getHeight());
}
}
});
}
public interface OnViewListener {
void onView(int width, int height);
}
}
以上代码完全可以粘贴复制,不难理解,传入想要获取的控件对象,实现接口或者用匿名对象得到控件的宽高。值得注意的是,这种方法不能在主线程中调用,必须开启子线程完成回调。