回复
鸿蒙系统下自定义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已经实现!
分类
标签
已于2021-3-25 09:50:00修改
赞
1
收藏 1
回复