美文网首页
android:底部背景阴影的dialog弹出

android:底部背景阴影的dialog弹出

作者: sunny635533 | 来源:发表于2019-06-15 19:01 被阅读0次

    style 样式:

    <style name="BottomDialog">

        <item name="android:windowNoTitle">true

        <item name="android:windowIsFloating">true

        <item name="android:windowEnterAnimation">@anim/push_bottom_in

        <item name="android:windowExitAnimation">@anim/push_bottom_out

        <item name="android:windowContentOverlay">@null

    </style>

    关键在于Theme.Dialog中的各种属性:

    <style name="Theme.Dialog" parent="Theme.AppCompat.Light.Dialog">

        <item name="windowActionBar">false</item>

        <!-- 没有标题栏 -->

        <item name="windowNoTitle">true</item>

        <!--边框-->

        <item name="android:windowFrame">@null</item>

        <!--是否浮现在activity之上-->

        <item name="android:windowIsFloating">true</item>

        <!-- 是否透明 -->

        <item name="android:windowIsTranslucent">true</item>

        <!--除去title-->

        <item name="android:windowNoTitle">true</item>

        <!-- 对话框是否有遮盖 -->

        <item name="android:windowContentOverlay">@null</item>

        <!-- 对话框出现时背景是否变暗 -->

        <item name="android:backgroundDimEnabled">true</item>

        <!-- 背景颜色,因为windowBackground中的背景已经写死了,所以这里的设置无效 -->

        <item name="android:colorBackground">@color/background_floating_material_light</item>

        <!-- 着色缓存(一般不用)-->

        <item name="android:colorBackgroundCacheHint">@null</item>

        <!-- 标题的字体样式 -->

        <item name="android:windowTitleStyle">@style/RtlOverlay.DialogWindowTitle.AppCompat</item>

        <item name="android:windowTitleBackgroundStyle">@style/Base.DialogWindowTitleBackground.AppCompat</item>

        <!--对话框背景(重要)  , default = abc_dialog_material_background-->

        <item name="android:windowBackground">@drawable/dialog_bg_custom</item>

        <!-- 动画 -->

        <item name="android:windowAnimationStyle">@style/Animation.AppCompat.Dialog</item>

        <!-- 输入法弹出时自适应 -->

        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>

        <item name="windowActionModeOverlay">true</item>

        <!-- 列表部分的内边距,作用于单选、多选列表 -->

        <item name="listPreferredItemPaddingLeft">20dip</item>

        <item name="listPreferredItemPaddingRight">24dip</item>

        <item name="android:listDivider">@null</item>

        <!-- 单选、多选对话框列表文字的颜色 默认:@color/abc_primary_text_material_light -->

        <item name="textColorAlertDialogListItem">#00ff00</item>

        <!-- 单选、多选对话框的分割线 -->

        <!-- dialog中listView的divider 默认:@null-->

        <item name="listDividerAlertDialog">@drawable/divider</item>

        <!-- 单选对话框的按钮图标 (默认不为null)-->

        <item name="android:listChoiceIndicatorSingle">@android:drawable/btn_radio</item>

        <!-- 对话框整体的内边距,但不作用于列表部分 默认:@dimen/abc_dialog_padding_material-->

        <item name="dialogPreferredPadding">20dp</item>

        <item name="alertDialogCenterButtons">true</item>

        <!-- 对话框内各个布局的布局文件-->

        <item name="alertDialogStyle">@style/AlertDialogStyle</item>

    </style>

    自定义Dialog类:

    package com.hongshi.wuliudidi.czrestruct.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;

    import android.widget.TextView;

    import com.aigestudio.wheelpicker.WheelPicker;

    import com.hongshi.wuliudidi.R;

    import java.util.ArrayList;

    import java.util.Calendar;

    /**

    * @author sunny

    * @version ${VERSION}

    * @created 2019/6/14

    * @title

    * @description

    * @changeRecord 2019/6/14 modify  by sunny

    *

    * 选择性别的弹框

    */

    public class SexWheelDialogextends Dialogimplements View.OnClickListener {

    private WheelPickersexPicker;

        private TextViewcancelView, titleView, okView;

        /**

    * 选择的天索引

    */

        private int sexSelectIndex =0;

        private ArrayListsexList =new ArrayList<>();

        public interface SexWheelSelectBack {

    void select(String sex);

        }

    private SexWheelSelectBackcallback;

        public SexWheelDialog(Context context) {

    super(context, R.style.BottomDialog);

            initView();

        }

    public SexWheelDialog(Context context, int theme) {

    super(context, theme);

            initView();

        }

    public void initView() {

    setContentView(R.layout.rz_dialog_sex);

            sexPicker = findViewById(R.id.dialog_sex_picker);

            okView = findViewById(R.id.dialog_date_commit);

            cancelView = findViewById(R.id.dialog_date_close);

            titleView = findViewById(R.id.dialog_date_title);

            initDailogArr();

            initData();

            initEvent();

        }

    private void initDailogArr() {

    setCanceledOnTouchOutside(false);

            Window window = getWindow();

            WindowManager.LayoutParams layoutParams = window.getAttributes();

            layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;

            window.setAttributes(layoutParams);

            window.setGravity(Gravity.BOTTOM);

            window.setWindowAnimations(R.style.BottomDialog);//AnimBottom

        }

    @Override

        public void onClick(View view) {

    switch (view.getId()) {

    case R.id.dialog_date_close:

    dismiss();

    break;

                case R.id.dialog_date_commit:

    if (this.callback !=null) {

    dismiss();

                        String sex =sexList.get(sexSelectIndex);

                        callback.select(sex);

                    }

    break;

            }

    }

    private void initEvent() {

    sexPicker.setOnItemSelectedListener(new WheelPicker.OnItemSelectedListener() {

    @Override

                public void onItemSelected(WheelPicker picker, Object data, int position) {

    sexSelectIndex = position;

                }

    });

            cancelView.setOnClickListener(this);

            okView.setOnClickListener(this);

        }

    public void initData() {

    sexList =new ArrayList<>();

            sexList.add("男");

            sexList.add("女");

            sexPicker.setData(sexList);

            sexPicker.setSelectedItemPosition(sexSelectIndex);

        }

    public void showDateDialog(SexWheelSelectBack callback) {

    this.callback = callback;

            show();

        }

    public void showDateWheelDiaolog(String title, String sexStr, SexWheelSelectBack callback) {

    titleView.setText(title);

            this.callback = callback;

            for (int i =0; i

    if (sexList.get(i).trim() == sexStr) {

    sexSelectIndex = i;

    return;

                }

    }

    sexPicker.setSelectedItemPosition(sexSelectIndex, true);

            show();

        }

    }

    相关文章

      网友评论

          本文标题:android:底部背景阴影的dialog弹出

          本文链接:https://www.haomeiwen.com/subject/raqifctx.html