开始
本篇博客主要是记录一下,关于AutoLayout一个适配问题的解决办法。
怎么使用AutoLayout?
关于AutoLayout怎么使用,这个博客地址写的很详细(AutoLayout作者的博客)
http://blog.csdn.net/lmj623565791/article/details/49990941
适配时的问题
先说下问题:
我是按分辨率 768*1280去开发的
选择的布局视图是这个:
清单文件里是这么配置的:
<meta-data
android:name="design_width"
android:value="768" />
<meta-data
android:name="design_height"
android:value="1280" />
正常我再添加个依赖,再继承一下AutoLayoutActivity,然后我就可以在xml布局里面随便的用px了,后面它就会帮我适配各种屏幕。
结果出现了一个这样的问题:
我在布局里面是这么写的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/background"
android:orientation="vertical">
<LinearLayout
android:layout_width="768px"
android:layout_height="1140px">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/loading" />
</LinearLayout>
</LinearLayout>
在Android stuido上预览效果是这样的
运行到手机上是这样的:
运行到手机上后下面多了一块白的。
我的天呐!!不是说好的代码预览和运行在手机上的效果是一样的吗? 这种情况我该怎么开发啊?怎么才能让它和我开发时候的预览效果一样呢?
问题分析
不着急咱先说说这种情况的问题:
我们在android studio上预览效果的情况下 所说的1280的高度其实是包括 状态栏 和下面按钮栏的。好我们看下图就明白了
然后运行在手机上,AutoLayout认为的1280是这样的(看下图)
区别大家应该都清楚了,就是在android studio上预览时候的1280高度是包括状态栏和按钮栏的,然而到手机上就不包括了,手机上中间那块就有1280,我们回到最开始的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/background"
android:orientation="vertical">
<LinearLayout
android:layout_width="768px"
android:layout_height="1140px">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/loading" />
</LinearLayout>
</LinearLayout>
这的中间布局高度我写的是1140px 再加上 状态栏45px 和 按钮栏95px 在android studio预览效果正好是铺满全屏1280px,可是到了真实手机上 中间那块就有1280px 减去1140px 肯定下面就多出一块没有填充满。
不知道我说的是不是很明白?不明白也没关系,知道下面的解决办法就ok啦!
解决办法
预览的时候还用 768 * 1280
在AndroidManifest.xml文件中把这个配置改一下就ok了
<meta-data
android:name="design_width"
android:value="768" />
<meta-data
android:name="design_height"
android:value="1140" />
其他分辨率 可以自己算一下这个值,就是去掉你那个分辨率下的状态栏和按钮栏。
我的问题就这么解决啦,不知道对你用这个办法好不好使,好使的话点个赞评论一下吧亲!!!!
(不知道鸿洋能不能看见这个问题并解决一下就好了)
补充:后来又想到一个问题,就是如果返回和 home按键不是虚拟的,用这个办法效果会不会不一样了呢,经测试 没问题!!!!!