Android自定义Dialog以控制其位置和宽高

举报
yechaoa 发表于 2022/05/31 00:52:55 2022/05/31
【摘要】 1.自定义Dialog类 import android.app.Dialog;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.Window;import android.v...

1.自定义Dialog类


  
  1. import android.app.Dialog;
  2. import android.content.Context;
  3. import android.view.Gravity;
  4. import android.view.View;
  5. import android.view.Window;
  6. import android.view.WindowManager;
  7. /**
  8. * Created by yechaoa on 2016/10/22.
  9. */
  10. public class MyDialog extends Dialog {
  11. private Window window = null;
  12. public MyDialog(Context context, boolean cancelable,
  13. OnCancelListener cancelListener) {
  14. super(context, cancelable, cancelListener);
  15. }
  16. public MyDialog(Context context, int theme) {
  17. super(context, theme);
  18. }
  19. public MyDialog(Context context) {
  20. super(context);
  21. }
  22. public void setView(View view) {
  23. setContentView(view);
  24. }
  25. public void setView(int id) {
  26. setContentView(id);
  27. }
  28. public void setProperty(int x, int y, int w, int h) {
  29. window = getWindow();//得到对话框的窗口.
  30. WindowManager.LayoutParams wl = window.getAttributes();
  31. wl.x = x;//设置对话框的位置.0为中间
  32. wl.y = y;
  33. wl.width = w;
  34. wl.height = h;
  35. wl.alpha = 1f;// 设置对话框的透明度,1f不透明
  36. wl.gravity = Gravity.CENTER;//设置显示在中间
  37. window.setAttributes(wl);
  38. }
  39. }


  
  1. <style name="myDialog" parent="@android:style/Theme.Dialog">
  2. <!--dialog的背景,此处是一个圆角白底的xml文件,也可以是.9图-->
  3. <item name="android:windowBackground">@drawable/corners_bg_normal</item>
  4. <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
  5. <item name="android:windowFrame">@null</item><!--边框-->
  6. <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
  7. <item name="android:windowIsTranslucent">true</item><!--半透明-->
  8. <item name="android:windowNoTitle">true</item><!--无标题-->
  9. <item name="android:backgroundDimEnabled">true</item><!--模糊-->
  10. </style>


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3. <corners android:radius="10dp"/><!--圆角大小-->
  4. <solid android:color="@color/white"/>
  5. <stroke android:color="#cbcbcb" android:width="1px"/>
  6. </shape>


  
  1. final MyDialog dialog=new MyDialog(MainActivity.this, R.style.myDialog);
  2. final View view = View.inflate(ManifestEditActivity.this, R.layout.dialog_submit,null);
  3. dialog.setView(view);
  4. dialog.setProperty(0,0, 600, 400);//设置坐标和宽高
  5. dialog.setCanceledOnTouchOutside(true);
  6. dialog.show();
  7. Button dialogCancel= (Button) view.findViewById(R.id.dialog_cancel);
  8. dialogCancel.setOnClickListener(new View.OnClickListener() {
  9. @Override
  10. public void onClick(View v) {
  11. dialog.dismiss();
  12. }
  13. });
  14. Button dialogConfirm= (Button) view.findViewById(R.id.dialog_confirm);
  15. dialogConfirm.setOnClickListener(new View.OnClickListener() {
  16. @Override
  17. public void onClick(View v) {
  18. //doSomething
  19. }
  20. });

文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/53836891

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。