当前位置: 代码迷 >> 综合 >> 自定义的高级dialog
  详细解决方案

自定义的高级dialog

热度:61   发布时间:2023-10-15 10:46:38.0

在res/values/style里面插入以下代码:

<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item> dialog的框有无
<item name="android:windowIsFloating">true</item>是否漂在activity上
<item name="android:windowIsTranslucent">false</item>是否办透明
<item name="android:windowNoTitle">true</item>是否不要标题
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
</style>


View dialogView = View.inflate(this, R.layout.layout_dialog, null);
final Dialog dialog = new Dialog(MainActivity.this, R.style.CustomDialog);
dialog.setContentView(dialogView);
dialog.setCancelable(false);// 只允许点击对话框以内才接收点击事件,通俗的说只允许点击对话框
/**
* dialog默认的在手机屏幕显示是在中间,然后可以修改成底部或者是顶部。但是要是公司的UI给你的效果图示在中下部分,你就懵逼了。只能自己手动来设置位置。但是设置的时候由于适配原因,要么你
把设置的像素统一转换成dp来摆放位置,要么就按我下面这种方式,我是通过判断当前手机屏幕是哪一
种分辨率来进行适配。虽然low一点,但是也实用。小于2.5代表是720*1080及以下的屏幕,大于2.5的前
市场上只有1080*1920,我用的手机就是后者。当然你也可以通过ui给你的像素转换成dp,再把dp在 params.y = dp-->px;这也是可以的。。。说两遍了。
*/
Window dialogWindow = dialog.getWindow();
LayoutParams params = dialogWindow.getAttributes();
if (getResources().getDisplayMetrics().density < 2.5) {params.y = 350;} else {params.y = 600;}dialog.show();Button customYes = (Button) dialogView.findViewById(R.id.custom_yes);Button customNo = (Button) dialogView.findViewById(R.id.custom_no);customNo.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_SHORT).show();dialog.dismiss();}});customYes.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "确定了", Toast.LENGTH_SHORT).show();dialog.dismiss();}});}


  相关解决方案