ITPub博客

首页 > 移动开发 > ANDROID > 使用响应式布局MediaQuery解决text组件在不同分辨率机型上文字显示不一致的问题

使用响应式布局MediaQuery解决text组件在不同分辨率机型上文字显示不一致的问题

原创 ANDROID 作者:华为开发者论坛 时间:2021-04-28 16:52:21 0 删除 编辑
问题概述

text组件,设定宽度,文字铺满对应宽度,高分辨率机型加载文字压缩,联盟存在同样问题


复现步骤

1、加载demo

2、组件-->基础组件-->text组件


实际行为

1、低配机型加载正常 2、高分辨率机型加载文字压缩


验证

找了两台设备 ,其分辨率分别是 2340 * 1080和2560 * 1600, 分别对一下样式进行验证

<text style="width: 172px;">text-align:center</text>2340 * 1080

 

可以明显看到完整贴和边缘

抓取布局得到布局宽度是  248 pixel

172 * (1080 / 750) = 247.68 四舍五入为248


2560 * 1600

 

可以看到布局不下了,被换行了

抓取布局得到布局宽度是  367 pixel

172 * (1600 / 750) = 366.9 四舍五入为367


验证结果


  • 在 2560 * 1600 的设备上完整布局这行文本需要 175px;

  • 在 2340 * 1080 的设备上完整布局这行文本需要 172px;


分析

2560 * 1600

textsize = 64.0

2340 * 1080

textsize = 43.0

实际上是不同设备下的生效的 textsize是不一样的,所以最终生成的布局宽度可能不是一个固定的宽度


解决

快应用提供了 MediaQuery 能力,可以用来适配不同分辨率的设备

在这里就可以使用 mediaquery判断屏幕宽度的方式


例子


  • 使用前

<template>    
<div>        
<text>text-align:left</text>    
</div>
</template>
 <style>    
 .text-test {
         width: 172px;    
}</style>
  • 效果


  • 使用后

<template>
    <div>
        <text class="text-test">text-align:left</text>
    </div>
</template>
 
<style>
    @media (width > 1080) {
        .text-test {
            width: 175px;
        }
    }
    .text-test {
        width: 172px;
    }
</style>
  • 效果


适配条件
  • 首先找到不同分辨率的设备,使用 ide 的 inspact 功能获取到期望的宽度值

2560 \* 1600 需要的宽度是 175px;  2340 * 1080需要的是172px;

  • 使用 mediaquery 对不同设备进行区分


这里判断一下设备宽度

@media (width > 1080) { 
       .text-test {
                   width: 175px;        
                   }    
         }


原文链接: https://developer.huawei.com/consumer/cn/forum/topic/0204423007060260633?fid=18

原作者: Mayism


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69970551/viewspace-2770349/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-04-21

  • 博文量
    402
  • 访问量
    727003