使用确切位置布局(PositionLayout)实现登录页面
头像 宋你一朵小红花 2020-11-20 10:00:00    发布
3325 浏览 15 点赞 15 收藏

使用确切位置布局(PositionLayout)实现登录页面-鸿蒙开发者社区UI图拆解及代码实现

这个界面我们是不是很熟悉,打开浏览器,很多网站登录界面就是如此,一个用户账号输入框、一个密码输入框,及一个登录按钮,最多再来一个验证码输入框。

作为开发者,很多时候我们拿到的就是这样一张上面标注很多参数的UI图,而我们需要以代码的方式将其实现在用户可操作的界面上。

我们将以PositionLayout布局实现上面的UI图。

① 以PositionLayout为父组件,宽高占满整个屏幕。

② 接下来先进行组件占位,两个TextField和一个Button组件。

③ 根据UI图的比例,让组件左上角(x/y)为起始点,相对父组件的距离进行移动。

④ 优化组件样式。


<PositionLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:background_element="$media:background_login">

    <TextField
        ohos:id="$+id:username"
        ohos:height="match_content"
        ohos:width="200vp"
        ohos:text="请输入用户名..."
        ohos:background_element="#EAEDED"
        ohos:text_color="#CCCCCC"
        ohos:text_size="18fp"
        ohos:padding="10vp"/>
</PositionLayout>
复制

我们发现运行后文本框置于整个布局的左上角,并没有到达我们想要的位置,是因为我们没有给其绝对位置的定位。我们在MainAbilitySlice中根据ID找到我们的文本框,然后给其绝对位置X/Y轴距离。效果如图所示。


 TextField username = (TextField) findComponentById(ResourceTable.Id_username);
 username.setContentPosition(1110, 380);
 复制

使用确切位置布局(PositionLayout)实现登录页面-鸿蒙开发者社区另外两个组件和第一个文件组件一样,找到绝对位置即可实现。


<?xml version="1.0" encoding="utf-8"?>
<PositionLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:background_element="$media:background_login">

    <TextField
        ohos:id="$+id:username"
        ohos:height="match_content"
        ohos:width="200vp"
        ohos:text="请输入用户名..."
        ohos:background_element="#EAEDED"
        ohos:text_color="#CCCCCC"
        ohos:text_size="18fp"
        ohos:padding="10vp"/>

    <TextField
        ohos:id="$+id:password"
        ohos:height="match_content"
        ohos:width="200vp"
        ohos:text="请输入密码..."
        ohos:background_element="#EAEDED"
        ohos:text_color="#CCCCCC"
        ohos:text_size="18fp"
        ohos:padding="10vp"/>

    <Button
        ohos:id="$+id:login_btn"
        ohos:height="match_content"
        ohos:width="200vp"
        ohos:text="登录"
        ohos:text_size="20fp"
        ohos:padding="10vp"
        ohos:text_color="#FFFFFF"
        ohos:background_element="#0EAB8D"/>
</PositionLayout>
复制
TextField username = (TextField) findComponentById(ResourceTable.Id_username);
username.setContentPosition(1110, 380);
TextField password = (TextField) findComponentById(ResourceTable.Id_password);
password.setContentPosition(1110, 522);
Button loginBtn = (Button) findComponentById(ResourceTable.Id_login_btn);
loginBtn.setContentPosition(1110, 675);
复制

使用确切位置布局(PositionLayout)实现登录页面-鸿蒙开发者社区至此,我们就完成了绝对布局中组件的绝对定位,但我不建议你在项目中使用该布局,因为如果设备分辨率发生变化,那么你的布局整个会出现错乱。


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它
头像

宋你一朵小红花

我还没有写个人简介......

881

帖子

0

提问

1679

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255