由于Android程序的运行机制决定了无法再组件类外部使用getWidth和getHeight方法获得高度和宽度(在自定义组件类中可以实现),必须使用View.getMeasuredWidth和View.getMeasureHeight方法获得当前组件的宽度和高度,在调用这两个方法之前,必须调用View.measure方法先测量组件宽度和高度。 如果想直接获取在布局文件中定义的组件的宽度和高度,可以直接使用View.getLayoutParams().width和View.getLayoutParams().height
代码如下:
- View view = getLayoutInflater().inflate(R.layout.activity_main, null);
- LinearLayout linearlayout = (LinearLayout)view.findViewById(R.id.linearlayout);
- //measure方法的参数值都设为0即可
- linearlayout.measure(0,0);
- //获取组件宽度
- int width = linearlayout.getMeasuredWidth();
- //获取组件高度
- int height = linearlayout.getMeasuredHeight();
注意:
1.如果在自定义组件中可以通过getWidth和getHeight方法获取宽高
2.如果组件的宽高设置为fill_parent或者wrap_content或者match_parent。则使用getMeasuredWidth或getMeasuredHeight方法获取组件
宽度或者高度时,当组件中包括其他子组件时,所获取的实际值是这些组件所占的最小宽度和最小高度。
- View view = getLayoutInflater().inflate(R.layout.activity_main, null);
- LinearLayout linearlayout = (LinearLayout)view.findViewById(R.id.linearlayout);
- //measure方法的参数值都设为0即可
- linearlayout.measure(0,0);
- //获取组件宽度
- int width = linearlayout.getMeasuredWidth();
- //获取组件高度
- int height = linearlayout.getMeasuredHeight();