自定义Dialog,背景,大小,位置。

ゝ一世哀愁。 2022-06-16 07:08 215阅读 0赞

1.要替换原有dialog的背景需要:使用自己的style,R.style.xxxx.xml

2.修改大小和位置需要:修改它的Layoutparams,就像修改view的Layoutparams类似:

  1. Window dialogWindow=this.getWindow();
  2. WindowManager.LayoutParams lp = dialogWindow.getAttributes();
  3. lp.gravity=Gravity.CENTER_VERTICAL;
  4. DisplayMetrics d =context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用
  5. lp.width = (int) (d.widthPixels * 0.8); // 宽度设置为屏幕的0.8
  6. dialogWindow.setAttributes(lp);

例子:

  1. /**
  2. * 提示用户-显示命令
  3. */
  4. public class VoiceTipDialog extends AlertDialog implements View.OnClickListener {
  5. private TextView mContent;
  6. private Button mBtnShow, mBtnTry;
  7. private Context context;
  8. public VoiceTipDialog(Context context, int themeResId) {
  9. super(context, themeResId);
  10. this.context=context;
  11. }
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.dialog_voice_tip);
  16. initView();
  17. setlistener();
  18. }
  19. private void setlistener() {
  20. mBtnShow.setOnClickListener(this);
  21. mBtnTry.setOnClickListener(this);
  22. }
  23. private void initView() {
  24. Window dialogWindow=this.getWindow();
  25. WindowManager.LayoutParams lp = dialogWindow.getAttributes();
  26. lp.gravity=Gravity.CENTER_VERTICAL;
  27. DisplayMetrics d =context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用
  28. lp.width = (int) (d.widthPixels * 0.8); // 宽度设置为屏幕的0.8
  29. dialogWindow.setAttributes(lp);
  30. //init
  31. mContent = (TextView)findViewById(R.id.content_tip);
  32. mContent.setText(Html.fromHtml(context.getString(R.string.voice_tip_content)));
  33. mBtnShow = (Button) findViewById(R.id.btn_donotshow_tip);
  34. mBtnTry = (Button) findViewById(R.id.btn_try_tip);
  35. }
  36. private VoiceTipDialogClickListener mOnClickListener;
  37. @Override
  38. public void onClick(View v) {
  39. switch (v.getId()) {
  40. case R.id.btn_donotshow_tip:
  41. mOnClickListener.showAagin(false);
  42. break;
  43. case R.id.btn_try_tip:
  44. mOnClickListener.dismiss();
  45. break;
  46. }
  47. }
  48. public interface VoiceTipDialogClickListener {
  49. void showAagin(boolean visiable);
  50. void dismiss();
  51. }
  52. public void setListener(VoiceTipDialogClickListener listener) {
  53. mOnClickListener = listener;
  54. }
  55. }

style样式:

  1. <style name="MyDialog" parent="@android:style/Theme.Dialog">
  2. <!-- 这里设置背景为透明,为了隐藏边框 -->
  3. <item name="android:windowFrame">@null</item><!--边框-->
  4. <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
  5. <item name="android:windowNoTitle">true</item>
  6. <!-- 这里是修改顶部标题背景颜色,具体颜色自己定,可以是图片 -->
  7. <item name="android:topDark">@android:color/transparent</item>
  8. <!-- 这里是修改内容区域背景颜色 -->
  9. <item name="android:windowIsTranslucent">true</item><!--半透明-->
  10. <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
  11. <!-- <item name="android:windowIsFloating">true</item>--><!--是否浮现在activity之上-->
  12. <!---->
  13. <item name="android:backgroundDimEnabled">false</item><!--模糊-->
  14. </style>

发表评论

表情:
评论列表 (有 0 条评论,215人围观)

还没有评论,来说两句吧...

相关阅读

    相关 定义Dialog

    > 由于项目中需要用到自定义Dialog,所以学习了一下。 首先我们来个自定义主题 基本上市面上大多数自定义Dialog,大多数都是这个主题 <style n