当前位置: 首页 > 科技观察

HarmonyOS实战—TextField文本输入框组件基本使用

时间:2023-03-14 00:56:28 科技观察

HarmonyOS实战——TextField文本输入框组件的基本用法Text的子类,用于用户输入数据。常用属性:2.TextField案例-获取文本输入框内容并执行Toast提示通过TextField获取文本输入框内容并执行Toast提示创建新项目:TextFieldApplicationability_main因为在onClick方法中使用了TextField和Button这两个组件,所以必须将这两个组件移到member位置,使之成为一个后成员变量,onClick方法只能访问MainAbilitySlicepackagecom.xdr630.textfieldapplication.slice;importcom.xdr630.textfieldapplication.ResourceTable;importohos.aafwk.ability.AbilitySlice;importohos.aafwk.content.Intent;importohos.agp.components.Button;importohos.agp.components.Component.importohosagp.components.TextField;importohos.agp.utils.LayoutAlignment;importohos.agp.window.dialog.ToastDialog;publicclassMainAbilitySliceextendsAbilitySliceimplementsComponent.ClickedListener{TextFieldtf;Buttonbut;@OverridepublicvoidonStart(Intentintent;setonUI){.Layout_ability_main);//1.查找文本组件框架对象tf=(TextField)findComponentById(ResourceTable.Id_text);//查找按钮组件对象but=(Button)findComponentById(ResourceTable.Id_but);//2.绑定按钮固定点击事件//点击按钮时,必须获取文本输入框的内容but.setClickedListener(this);}@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}@OverridepublicvoidonClick(Componentcomponent){//当按钮被点击时之后获取文本输入框的内容Stringmessage=tf.getText();//使用Toast弹出消息ToastDialogtd=newToastDialog(this);//大小不用设置,默认包内容//自动关闭不需要设置,默认时间到会自动关闭//默认时长2秒//设置Toast的背景td.setTransparent(true);//位置(默认居中)td.setAlignment(LayoutAlignment.BOTTOM);//设置一个偏移量td.setOffset(0,200);//设置Toast内容td.setText(message);//让Toast出现td.show();}}运行:3.TextField组件高级使用3.1密码的密文显示输入密码时会以密文显示ohos:text_input_type="pattern_password":表示输入的密码以密文显示。基本用法:3.2基线设置有时文本输入框不是框,而是在其下方有一条水平线。这条线华为官方称为baseline。用一条横线表示文本输入框,在上面加上基线,去掉输入框的背景色。如果以后看到一个基线,再输入一些数字信息,这还是TextField文本输入box组件,只是没有设置背景色,所以和布局的颜色一致,看不到背景。3.3气泡设置用鼠标长按输入内容时,会选中该内容。前光标、后光标和中间选中内容的颜色会发生变化。华为官方给出了前后光标,以及未选中内容状态下出现的小气球,命名为bubbles。不选中时可以设置左、右、气泡。气泡的图片和颜色可以定制。下面使用的图片可自行拍摄:https://www.aliyundrive.com/s/wT22d1Vb1BV将左、右、中未选中的泡泡图片复制到media文件夹中。ohos:element_selection_left_bubble,ohos:element_selection_right_bubble分别设置左右气泡显示图片ohos:element_cursor_bubble:设置未选中时的气泡图片ohos:selection_color:设置选中时内容的颜色操作:4.TextField案例——长按可以查看密码的明文在一些APP中,登录界面的密码输入框有一个小眼睛。按住小眼睛可以看到密码的明文显示,松开小眼睛可以回到密文状态。把“小眼睛”换成Button组件,逻辑原理是一样的。需求分析:按住按钮,输入框密码变为明文松开按钮后,输入框密码变回密文新建工程:TextFieldApplication3ability_mainMainAbilitySlicepackagecom.xdr630.textfieldapplication3.slice;importcom.xdr630.textfieldapplication3.ResourceTable;importohos.aafwk.abilitySlice;importohos.aafwk.content.Intent;importohos.agp.components.Button;importohos.agp.components.Component;importohos.agp.components.InputAttribute;importohos.agp.components.TextField;importohos.multimodalinput.event.TouchEvent;publicclassMainAbilitySliceextendsAbilitySliceimplementsComponent.TouchEventListener{TextFieldtf;@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_main=object)/1(TextField)findComponentById(ResourceTable.Id_text));Buttonbut=(Button)findComponentById(ResourceTable.Id_but);//2.给按钮绑定一个触摸事件//因为在触摸事件中,可以获取到按下或释放//点击事件——只能捕获一次点击but.setTouchEventListener(this);}@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}@Override//参数1:按钮youaretouchingnow//参数2:Action对象publicbooleanonTouchEvent(Componentcomponent,TouchEventtouchEvent){intaction=touchEvent.getAction();if(action==TouchEvent.PRIMARY_POINT_DOWN){//表示当按钮没有被释放时//当按钮未发送,文本框中的密码将更改为纯文本tf.setTextInputType(InputAttribute.PATTERN_NULL);}elseif(action==TouchEvent.PRIMARY_POINT_UP){//表示何时释放//何时释放,将文本框中的密码改回密文tf.setTextInputType(InputAttribute.PATTERN_PASSWORD);}//true:表示触摸事件的后续动作也会被触发//false:表示触摸事件只触发第一个按但不按Song返回true;}}运行:5.TextField案例——搭建登录界面新建项目:TextFieldApplication4详情:Text文本(忘记密码?)组件默认放在左边,添加ohos:layout_alignment="right"放在右边即可,并且同时给ohos:right_margin="20vp"右边屏幕一些距离如果不写ohos:layout_alignment="right"属性,直接写ohos:right_margin="20vp,那么ohos:layout_alignment="right"属性就会失效,因为组件默认是放在左边的。ability_main操作:更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com