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

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

1.自定义Dialog类

import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
/**
 * Created by yechaoa on 2016/10/22.
 */
public class MyDialog extends Dialog {
    private Window window = null;
    public MyDialog(Context context, boolean cancelable,
                    OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }
    public MyDialog(Context context, int theme) {
        super(context, theme);
    }
    public MyDialog(Context context) {
        super(context);
    }
    public void setView(View view) {
        setContentView(view);
    }
    public void setView(int id) {
        setContentView(id);
    }
    public void setProperty(int x, int y, int w, int h) {
        window = getWindow();//得到对话框的窗口.
        WindowManager.LayoutParams wl = window.getAttributes();
        wl.x = x;//设置对话框的位置.0为中间
        wl.y = y;
        wl.width = w;
        wl.height = h;
        wl.alpha = 1f;// 设置对话框的透明度,1f不透明
        wl.gravity = Gravity.CENTER;//设置显示在中间
        window.setAttributes(wl);
    }
}

2.给dialog一个style

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

3.圆角白底xml文件

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

4.dialog的使用

final MyDialog dialog=new MyDialog(MainActivity.this, R.style.myDialog);
        final View view = View.inflate(ManifestEditActivity.this, R.layout.dialog_submit,null);
        dialog.setView(view);
        dialog.setProperty(0,0, 600, 400);//设置坐标和宽高
        dialog.setCanceledOnTouchOutside(true);
        dialog.show();
        Button dialogCancel= (Button) view.findViewById(R.id.dialog_cancel);
        dialogCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        Button dialogConfirm= (Button) view.findViewById(R.id.dialog_confirm);
        dialogConfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               //doSomething
            }
        });

目录
相关文章
|
22天前
|
XML IDE 开发工具
【Android UI】自定义带按钮的标题栏
【Android UI】自定义带按钮的标题栏
29 7
【Android UI】自定义带按钮的标题栏
|
6天前
|
Android开发
Android中如何动态的调整Dialog的背景深暗
在Android开发中,Dialog和DialogFragment可通过设置`Window`的`backgroundDimAmount`来控制背景变暗,突出对话框。在DialogFragment的`onCreateDialog`或`onViewCreated`中,获取`Dialog`的`Window`,设置`LayoutParams.dimAmount`(例如0.5f)并添加`FLAG_DIM_BEHIND`标志。要动态调整,可保存`LayoutParams`并在需要时更新。对于Dialog,创建时直接设置同样属性。还可以通过定义主题样式设置背景模糊程度。
20 7
|
8天前
|
搜索推荐 数据库 Android开发
自定义头像 Android
【6月更文挑战第16天】
|
22天前
|
XML API Android开发
android上FragmentTabHost实现自定义Tab Indicator
android上FragmentTabHost实现自定义Tab Indicator
18 1
|
22天前
|
XML 前端开发 API
Android中实现Bitmap在自定义View中的放大与拖动
Android中实现Bitmap在自定义View中的放大与拖动
56 1
|
1天前
|
搜索推荐 Android开发 开发者
Android 自定义组件
Android 自定义组件
6 0
|
8天前
|
开发工具 Android开发
Android 代码自定义drawble文件实现View圆角背景
Android 代码自定义drawble文件实现View圆角背景
15 0
|
8天前
|
Android开发
Android 自定义View 测量控件宽高、自定义viewgroup测量
Android 自定义View 测量控件宽高、自定义viewgroup测量
10 0
|
8天前
|
开发工具 Android开发 git
Android自定义View——可以设置最大宽高的FrameLayout
Android自定义View——可以设置最大宽高的FrameLayout
20 0
|
8天前
|
JSON Android开发 数据格式
Android动态添加view设置view大小(宽高)
Android动态添加view设置view大小(宽高)
10 0