android 设置初始页面背景变形了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 设置初始页面背景变形了相关的知识,希望对你有一定的参考价值。

图片被拉长了
<style name="activityTheme" parent="android:Theme">
<!-- 是否允许有标题栏 -->
<item name="android:windowNoTitle">true</item>
<!-- 提示背景图片 -->
<item name="android:windowBackground">@drawable/bg_startup</item>
</style>

参考技术A 设置ImageView的图片显示的方式为
setScaleType(ImageView.ScaleType.FIT_CENTER);

把图片按比例扩大/缩小到View的宽度,居中显示追问

在 styles.xml中怎么写啊

追答

不用再styles文件中写,直接在layout.xml布局文件中设置的ScaleType的属性

参考技术B 布局配置问题呢追问

求代码

追答

不知道你的图片是如果展示的,是作用layout 的背景呢还是一个imageview

看样子你是作为layout的背景才导致图片大小与模拟器大小不一致造成的

如果是imageview这样设置就可以了,不应该会变形

android:layout_width="wrap_content"
android:layout_height="wrap_content"

本回答被提问者采纳

解决因为手机设置字体大小导致h5页面在webview中变形的BUG

 

首先,我们做了一个H5页面,在各种手机浏览器中打开都没问题。我们采用了rem单位进行布局,通过JS来动态计算网页的视窗宽度,动态设置htmlfont-size,一切都比较完美。

这时候,你自信满满的将h5地址交给了APP工程师,做了一个WEBVIEW嵌套,然后就顺利交工了。

测试组在一堆手机中测试APP,突然,在某个手机上打开,你的页面布局了乱了,字变大或者变小,总之很奇葩。

你怀疑是APP的问题,但是客户端死活不承认。你在该手机浏览器中查看,确保没有一毛钱问题,也死活不承认是你的问题。于是测试人员对你俩不死不休的要求修改。于是,客户端给你加了调试工具后,你打开chrome进行调试,发现一个非常非常奇葩的问题:

我明明设置的html字号是100px,为什么在APP中就变成了86(或者其他数字),你找遍所有的代码,都没有发现这个86是从哪里来的,你快疯了!!找了N多人帮忙,都没能解决这个问题!!我很希望能够告诉你,赶紧来看我这篇博文,因为,你现在经历的一切,我TM刚刚经历过~~

好,你怎么也不会想到是手机设置字体大小造成的。因为默认浏览器中的内容是不受系统字体大小设置控制的,至少我遇到的几台手机都是这样的情况。但是APP不一样,APP是受那个玩意儿控制的!!

问题描述清楚了,出现这个问题,有以下因素

  1. 你的页面采用了rem单位,并且是采用js动态计算htmlfont-size
  2. 你的页面被加在了APP中的webview
  3. 这该死的手机被重设了字体大小

解决方法

一般,我们动态计算好htmlfont-size之后,我们就啥都不干了,就走了。但是,我们现在知道了,我们设置的大小不一定是真实的大小,所以,我们需要在设置完字体大小之后,再去重新获取一下htmlfont-size,看看实际的这个值,和我们设置的是不是一样。如果不一样,就要根据比例再设置一次。

以下是我的完整代码:

function htmlFontSize(){
    var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
    var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
    var width = w > h ? h : w;
    width = width > 720 ? 720 : width
    var fz = ~~(width*100000/36)/10000
    document.getElementsByTagName("html")[0].style.cssText = ‘font-size: ‘ + fz +"px";
    var realfz = ~~(+window.getComputedStyle(document.getElementsByTagName("html")[0]).fontSize.replace(‘px‘,‘‘)*10000)/10000
    if (fz !== realfz) {
        document.getElementsByTagName("html")[0].style.cssText = ‘font-size: ‘ + fz * (fz / realfz) +"px";
    }
}

 

以上是关于android 设置初始页面背景变形了的主要内容,如果未能解决你的问题,请参考以下文章

android中状态栏怎么布局

Android适配-view设置背景闪烁

android 如何让一个dialog的背景为透明

Android背景+文本+按钮图标

怎样使用CSS 是图片与浏览器的大小保持一致 并且 图像不变形 就像QQ空间登录的 页面一样

如果使用 Parse Push,是不是可以为 Android 上的通知抽屉中的图标设置背景颜色?