很多次,我们想要动态地设置我们的布局大小。因此,我们需要在界面进行显示之前获取屏幕的大小,例如在onCreate()方法大众。获取屏幕大小和尺寸很简单只需要2行代码,但它不意味着我们应用的布局大小也可以同样的方式获取。
为获取我们布局的实际大小,我们需要知道屏幕大小,标题栏,状态栏。最终从屏幕大小减去标题栏及状态栏的高度的方式获取我们布局的实际大小。XML文件如下:
在onCreate,写上
输出结果为
添加 root.post(Runnable)的原因是:onCreate()方法完成之后,Activity才可以知道Window和Content的大小。因此当 onCreate()执行后,root.post()会执行然后我们可以获取窗口中各个部件的高度。
好处
如果同样的代码使用在不同的Activity,可以把这些代码添加为类的静态方法,并进行调用。
为获取我们布局的实际大小,我们需要知道屏幕大小,标题栏,状态栏。最终从屏幕大小减去标题栏及状态栏的高度的方式获取我们布局的实际大小。XML文件如下:
在onCreate,写上
输出结果为
添加 root.post(Runnable)的原因是:onCreate()方法完成之后,Activity才可以知道Window和Content的大小。因此当 onCreate()执行后,root.post()会执行然后我们可以获取窗口中各个部件的高度。
好处
- onCreate()中添加代码,因此不管屏幕是否旋转,它都会执行,我们都可以获取最后的窗口尺寸。
- 不管屏幕密度,代码可以在所有的密度当中执行。不同的密度有不同大小的标题栏,状态栏及内容视图。
- 不管什么时候布局需要动态的知道它的大小并设置它的子视图的高度,这都是一个最好的选择。
如果同样的代码使用在不同的Activity,可以把这些代码添加为类的静态方法,并进行调用。