自定义Dialog
程序员文章站
2022-07-02 14:54:31
...
在自定义Dialog之前,首先推荐一篇Dialog文章,其拓展性特别强:
https://github.com/jiang111/IndicatorDialog
在开发中,有时候会遇到使用Dialog的时候,弹出Dialog时,背景的颜色变化总是时一层黑色,这样的解决方案只是需要在引用style时设置属性
false即可
自定义Dialog效果图如下:
代码如下:
第一步:
点击textView弹出Dialog
//引用R.style.dialog改变其Dialog的其他属性
CustomDialog selectDialog = new CustomDialog(MainActivity.this,R.style.dialog);//创建Dialog并设置样式主题
Window win = selectDialog.getWindow();
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.x = 80;//设置x坐标
params.y = -200;//设置y坐标
win.setAttributes(params);
selectDialog.setCanceledOnTouchOutside(true);//设置点击Dialog外部任意区域关闭Dialog
selectDialog.show();
第二步:
自定义Dialog
public class CustomDialog extends Dialog {
public CustomDialog(@NonNull Context context) {
super(context);
}
public CustomDialog(@NonNull Context context, @StyleRes int themeResId) {
super(context, themeResId);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_custom_dialog);
}
}
第三步:
dialog布局:R.layout.my_custom_dialog—忽略
第四步:
dialog引用的样式R.style.dialog
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">false</item><!--半透明-->
<item name="android:windowNoTitle">true</item><!--无标题-->
<item name="android:windowBackground">@color/transparent</item><!--背景透明(自己想要的背景颜色)-->
<!--设置属性为false时,则Dialog弹出时,activity背景为高亮白色,设置为true时,则为一层黑色-->
<item name="android:backgroundDimEnabled">false</item>
</style>
以上即可解决!
上一篇: 会自动消失的自定义Dialog