自定义Dialog(详细)

xiaoxiao2021-02-27  503

不多说,直接写步骤。

1.首先自定义类实现AlertDialog (dialog及dialog的子类就可以),并实现器构造方法

public class MyDialog extends AlertDialog {

private Activity context;

public MyDialog(Activity context) {         // 通过构造方法 传入自定义的样式         super(context, R.style.AddrDialogStyle);         //传入上下文

this.context = context;     }

}

2.其中R.style.AddrDialogStyle就是我们自定义的dialog的样式(这些就可以根据你自己的需求设置啦,我去掉了标题栏和设置了背景并自定义了动画)

    <style name="AddrDialogStyle" parent="@android:style/Theme.Dialog">         <item name="android:windowNoTitle">true</item>         <!-- 去标题栏 -->         <item name="android:windowBackground">@color/white</item>         <!-- 背景白色 -->         <item name="android:windowAnimationStyle">@style/ADDRDialogAnim</item>

<!-- 动画-->     </style>

<style name="ADDRDialogAnim">         <item name="android:windowEnterAnimation">@anim/dialog_enter</item>         <!-- dialog的显示动画 -->         <item name="android:windowExitAnimation">@anim/dialog_exit</item>         <!-- 消失动画 -->     </style>

3.自定义动画样放在res下anim文件夹下,如下(这里可以设置任意你想要的动画,我这里就是平移动画)

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" >     <!--动画集合只有一个平移动画-->     <translate         android:duration="1000"           android:toYDelta="0%"           android:fillAfter="true"                  android:fromYDelta="100%p" /> </set>

4.实现dialog的onCreate方法(在这里设置我们的dialog的view了)

@Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         //打气进我们的布局(布局的控件你可以任意赋值 并进行其他操作哦) View inflate = View.inflate(getContext(), R.layout.dialog_add_style, null);         setContentView(inflate);

        //记住dialog在界面显示的方式要设置在setContentView的后面,否则会显示出错

(在这里我们需求就是在底部弹出,宽度占满) // 获取窗口对象         Window window = getWindow();         // 获取对应的布局参数         WindowManager.LayoutParams layoutParams = window.getAttributes();         //保证宽度占满屏幕         layoutParams.width = window.getWindowManager().getDefaultDisplay().getWidth();         // 更改显示位置    CENTER_HORIZONTAL解决不同屏幕的适配问题         layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;         // 重新设置布局参数         window.setAttributes(layoutParams); }
转载请注明原文地址: https://www.6miu.com/read-221.html

最新回复(0)