智能客服
你问我答,随时在线为你解决问题
证件类型选择是便捷生活类应用中高频使用场景之一,如用户在注册账号、实名认证、信息填报时,需要选择证件类型并输入证件号码。
本示例基于不依赖UI组件的半模态页面openBindSheet构建用户注册的证件类型半模态页面,支持选择的证件类型包括居民身份证、境外人员身份证明、港澳台居民居住证等。

- // UserRegistrationPage.ets
- @Extend(Text)
- function textStyle() {
- // 定义文字样式信息
- }
- @Component
- export struct UserRegistrationPage {
- @Styles
- rowStyle(){
- // 定义组件样式信息
- }
- build() {
- Column({ space: Constant.REG_INFO_SPACE_10 }) {
- Row() {
- Text($r('app.string.name_id_type'))
- .textStyle()
- }
- .rowStyle()
- }
- }
- }
- // UserRegistrationPage.ets构造半模态页面参数,触发半模态页面显示和关闭
- private ctx: UIContext = this.getUIContext();
- private contentNode: ComponentContent<Object> =
- new ComponentContent(this.ctx, wrapBuilder(idTypeBindSheetBuilder),
- new BindSheetParams(this.selectedIDType, idTypeMainData, false));
-
- aboutToAppear(): void {
- PromptActionClass.setContext(this.ctx)
- PromptActionClass.setContentNode(this.contentNode)
- PromptActionClass.setOptions(this.options)
- }
-
- idTypeOnClick() {
- // 每次重新点开证件类型,均为打开一级弹框
- this.openMainSheet();
- }
-
- openMainSheet() {
- PromptActionClass.closeBindSheet();
- this.contentNode.update(new BindSheetParams(this.selectedIDType, idTypeMainData, false));
- this.options = {
- // ...
- };
- PromptActionClass.setOptions(this.options);
- PromptActionClass.openBindSheet();
- }
-
- // IDTypeBindSheet.ets构造半模态页面实现
- @Builder
- export function idTypeBindSheetBuilder(dialogParams: BindSheetParams) {
- Column() {
- // ...
- }
- }
- ├──entry/src/main/ets // 代码区
- │ ├──common
- │ │ └──CommonConstants.ets // 常量
- │ ├──components
- │ │ └──IDTypeBindSheet.ets // 证件类型半模态页面实现
- │ ├──entryability
- │ │ └──EntryAbility.ets
- │ ├──entrybackupability
- │ │ └──EntryBackupAbility.ets
- │ ├──pages
- │ │ ├──NavigationPage.ets // 主页面
- │ │ └──UserRegistrationPage.ets // 用户注册页面
- │ ├──utils
- │ │ ├──DisplayUtil.ets // 页面显示工具类
- │ │ └──PromptActionClass.ets // 半模态页面工具类
- │ └──viewmodel
- │ └──IDTypeData.ets // 证件类型数据模型类
- └──entry/src/main/resources // 资源目录