鸿蒙系统下自定义Toast的实现

charlesc
发布于 2021-3-25 09:50
浏览
1收藏

本文介绍Homary OS下基于ToastDialog自定义Toast实现的方法。

 

ToastDialog类的相关方法

https://developer.harmonyos.com/cn/docs/documentation/doc-references/toastdialog-0000001054440045

 

Toast的简单实现

public static void showSimpleToast(Context context, String toastStr){
    new ToastDialog(context).setDuration(500).setText(toastStr).setAlignment(LayoutAlignment.CENTER).show();
}

 

这种方法直接利用ToastDialog类的setText方法,默认背景色为白色,字体为黑色,显示效果不是很好

 


自定义Toast的实现

public static void showCustomText(Context context, String toastStr){
    Text textComponent = new Text(context);
    textComponent.setText(toastStr);
    int padding = DeviceUtils.vpToPx(context, 10);
    //设置间距为10vp
    textComponent.setPadding(padding, padding, padding, padding);
    textComponent.setTextColor(Color.WHITE);
    textComponent.setTextAlignment(TextAlignment.CENTER);
    textComponent.setTextSize(DeviceUtils.vpToPx(context, 20));
    ShapeElement shapeElement = new ShapeElement();
    shapeElement.setShape(ShapeElement.RECTANGLE);
    //设置背景半透明
    shapeElement.setRgbColor(RgbColor.fromArgbInt(Color.argb(127, 0, 0, 0)));
    textComponent.setBackground(shapeElement);
    //设置文字允许多行
    textComponent.setMultipleLine(true);

    DirectionalLayout.LayoutConfig layoutConfig = new DirectionalLayout.LayoutConfig();
    layoutConfig.width = ComponentContainer.LayoutConfig.MATCH_CONTENT;
    layoutConfig.height = ComponentContainer.LayoutConfig.MATCH_CONTENT;
    layoutConfig.alignment = LayoutAlignment.CENTER;
    textComponent.setLayoutConfig(layoutConfig);

    ToastDialog toastDialog =  new ToastDialog(context).setDuration(500).setComponent(textComponent).setAlignment(LayoutAlignment.CENTER);
    //设置弹框背景透明
    toastDialog.setTransparent(true);
    toastDialog.show();
}

 

这种方法直接利用ToastDialog类的setComponent方法,自定义视图,能够达到较好的UI效果:鸿蒙系统下自定义Toast的实现-鸿蒙开发者社区至此,自定义Toast已经实现!

分类
标签
已于2021-3-25 09:50:00修改
1
收藏 1
回复
举报
回复