在实际开发中,我们很多时候都需要获取控件高度,因为不同的手机厂商设计的手机屏幕大小不一,不由得让我们去手动适配屏幕。然而网上关于获取控件高度的方法一大堆,我这个方法也不是唯一方法。
回归正题,我打算用回调的方式来实现控件的宽高,有兴趣的同学可以试试看。
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);
}
}
以上代码完全可以粘贴复制,不难理解,传入想要获取的控件对象,实现接口或者用匿名对象得到控件的宽高。值得注意的是,这种方法不能在主线程中调用,必须开启子线程完成回调。
本文介绍了一种通过回调方式获取Android控件宽度和高度的方法。该方法利用ViewTreeObserver的addOnGlobalLayoutListener监听器,在布局完成后获取指定控件的宽高,并通过接口回调返回结果。
970

被折叠的 条评论
为什么被折叠?



