DialogFragment显示在底部

主要逻辑代码为:

  @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        super.onCreateDialog(savedInstanceState);
        Dialog dialog = new Dialog(getActivity(), R.style.BottomDialog);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置Content前设定
        dialog.setContentView(R.layout.bottom_menu);
        dialog.setCanceledOnTouchOutside(true); // 外部点击取消

        // 设置宽度为屏宽, 靠近屏幕底部。
        Window window = dialog.getWindow();

        //设置dialog的 进出 动画
        window.setWindowAnimations(R.style.animate_dialog);
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.gravity = Gravity.BOTTOM; // 紧贴底部
        lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度持平
        window.setAttributes(lp);

        final Button btn1 = (Button) dialog.findViewById(R.id.empty);
        Button btn2 = (Button) dialog.findViewById(R.id.loading);
        Button btn3 = (Button) dialog.findViewById(R.id.retry);
        Button btn4 = (Button) dialog.findViewById(R.id.suc);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn1.setTextColor(Color.RED);
            }
        });

        return dialog;
    }
   <style name="BottomDialog" parent="@style/AppTheme">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>

    <style name="animate_dialog">
        <item name="android:windowEnterAnimation">@anim/dialog_enter</item>
        <item name="android:windowExitAnimation">@anim/dialog_out</item>
    </style>

dialog_enter:

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromYDelta="100%p"
    android:interpolator="@android:interpolator/accelerate_decelerate"
    android:toYDelta="0%p"/>

dialog_out:

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromYDelta="0%p"
    android:toYDelta="100%p"/>
 override fun onStart() {
        super.onStart()
        val windowParams = dialog.window.getAttributes()
//        windowParams.dimAmount = 0.0f
        windowParams.y = -50
        dialog.window.setAttributes(windowParams)
        getDialog().getWindow().setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

        //getDialog().getWindow().setLayout(-1, -2);//这2行,和上面的一样,注意顺序就行;
        getDialog().getWindow().setLayout((RudenessScreenHelper.getScreenSize(app)[0] *0.92f).toInt(), -2)//这2行,和上面的一样,注意顺序就行;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值