跟单击事件类似,长按事件也有4种写法,这里采用当前类作为实现类这种写法,其他写法可以参见《单击事件的4种写法》。
实现步骤:
1.通过id找到组件。
2.给需要的组件设置长按事件。
3.本类实现LongClickedListener接口。
4.重写onLongClicked方法。
①MainAbilitySlice.java文件
package com.example.yeman.slice; import com.example.yeman.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Button; import ohos.agp.components.Component; import ohos.agp.components.Text; public class MainAbilitySlice extends AbilitySlice implements Component.LongClickedListener{ Text txt; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); //找到按钮。 // 说明:findComponentById返回的是父类对象所有组件,因此需要(Button)强转。 Button but = (Button) findComponentById(ResourceTable.Id_but); //找到文本框组件 txt = (Text) findComponentById(ResourceTable.Id_txt); //给按钮绑定一个双击事件 but.setLongClickedListener(this); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } @Override public void onLongClicked(Component component) { txt.setText("你长按了按钮!"); } }
②ability_main.xml文件
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:alignment="center" ohos:orientation="vertical"> <Text ohos:id="$+id:txt" ohos:height="match_content" ohos:width="match_content" ohos:text="这是文本框组件" ohos:text_size="100"/> <Button ohos:id="$+id:but" ohos:height="match_content" ohos:width="match_content" ohos:background_element="blue" ohos:text="请长按我" ohos:text_size="120"/> </DirectionalLayout>