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.v...
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);
}
}
<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>
<?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>
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
}
});
文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/yechaoa/article/details/53836891
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)