问题提出:RelativeLayout布局中,有时经常会出现达不到自己的要求,这就需要重新设置一定的高度、宽度等来达到自己的要求。
现象:
1、如果在onCreate方法中,读取match_parent,wrap_content布局高度、宽度结果都为0。根本无法达到自己想要的结果。
2、如果想用其他方法试了N久不得法,在网上找,还是总觉得不满意。于是查帮助文档发现ViewTreeObserver类,在ViewTreeObserver.OnGlobalLayoutListener事件中一试,结果不高度、宽度不为零。经过多次测试跟结果相符。
终于找到结果:在onCreate方法中定义一个ViewTreeObserver对象,加载完后就可以帮助设置Margin、宽度、高度等,代码如下:
ViewTreeObserver vto = viewPager.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
viewPager.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int mHeight=llFootTabs.getMeasuredHeight();
try
{
RelativeLayout.LayoutParams lp=(RelativeLayout.LayoutParams)viewPager.getLayoutParams();
lp.setMargins(0, 0, 0, mHeight);
}
catch(Exception e)
{
Log.i("Test",e.toString());
}
}
});
写完后悔了,网上有好多这样的示例,郁闷当中。。。。。。。