我的LinearLayout设置高度为match_parent,如下所示:
<LinearLayout
android:id="@+id/list_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
我想获得此LinearLayout的高度 我使用下面的代码:
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout);
int h = ll_list.getHeight();
但它返回null 我能怎么做?
答案 0 :(得分:38)
首先:您的LinearLayout
ID为left_layout
,而不是list_layout
。
此外,ll_list.getHeight()
如果尚未绘制,则会返回0(以及ll_list.getWidth()
)。
解决方案是在你的视图布局后获得高度:
ll_list.post(new Runnable(){
public void run(){
int height = ll_list.getHeight();
}
});
确保ll_list
为final
。
答案 1 :(得分:1)
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout);
^^^^^^^^^^
答案 2 :(得分:0)
你需要等待View初始化首先使用View Tree Observer它等待创建视图看看这个
答案 3 :(得分:-6)
public static int getViewDimensions(View v,String what){
int result = 0;
if (what.equalsIgnoreCase("height")) {
result = v.getHeight();
} else {
result = v.getWidth();
}
return result;
}
然后onBackPressed()您可以获得所需的任何ViewLinear的宽度和高度。
@Override
public void onBackPressed() {
RelativeLayout banner = (RelativeLayout)findViewById(R.id.banner);
int h = getViewDimensions(banner, "height");
int w = getViewDimensions(banner, "width");
Log.v("Height*Widht", h +"*"+ w);
}