您的位置:首页 > 移动开发 > Android开发

Android开发笔记: 解决View宽高为0的问题

2017-10-13 10:51 363 查看
   在做android项目时,大多数会遇到view的width,height为0的情况,不管你是用getWidth()还是getMeasuredWidth都无效,下面就是解决方法,将下面代码拷贝到任何一个函数里即可,注意,只能在run里获得的width或height,所以需要增加变量保存获得的width和height。下面2个方法结果一样

注意:

1 定义static变量保存宽高值

2 run里不能重复获取某一view的宽高,否则为0

方法一:

view.postDelayed(new Runnable() {
@Override
public void run() {
LogHandle.d("audio_sv_in:--------getWidth-------" + audio_sv_in.getWidth());
LogHandle.d("audio_sv_in:--------getHeight-------" + audio_sv_in.getHeight());
LogHandle.d("rl_audio_ins:--------getWidth-------" + rl_audio_ins.getWidth());
LogHandle.d("rl_audio_ins:--------getHeight-------" + rl_audio_ins.getHeight());
}
}, 300);


方法二:

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.postDelayed(new Runnable() { @Override public void run() { LogHandle.d("audio_sv_in:--------getWidth-------" + audio_sv_in.getWidth()); LogHandle.d("audio_sv_in:--------getHeight-------" + audio_sv_in.getHeight()); LogHandle.d("rl_audio_ins:--------getWidth-------" + rl_audio_ins.getWidth()); LogHandle.d("rl_audio_ins:--------getHeight-------" + rl_audio_ins.getHeight()); } }, 300);
}
});


效果图:



参考博客:http://blog.csdn.net/nailsoul/article/details/25909313
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐