Android 基于NumberPicker自定义弹出窗口Dialog整合日期选择器

54 篇文章 2 订阅

Android实现把年月选择器放到AlertDialog中_左眼看成爱的博客-CSDN博客

Android使用NumberPicker实现年月滚动选择器_左眼看成爱的博客-CSDN博客

前面两篇文章我们分别讲了

1,如何用NumberPicker实现年月选择器

2,如何把1中的用NumberPicker实现的年月选择器放到AlertDialog中去。

这篇文章我们则推出实现了弹层遮罩联动的最终版本,具体实现的效果请看示例图:

上面两个角圆角化:

 

 

 1 定义自定义的Dialog样式

在res/values/styles.xml文件中定义自定义的Dialog样式:

<style name="BottomDialog" parent="Theme.AppCompat.Dialog">
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowAnimations">@style/DialogAnimation</item>
    <item name="android:background">@color/transparent</item>
 <!--    <item name="android:windowSoftInputMode">stateUnspecified|adjustResize</item>-->
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_in_up</item>
    <item name="android:windowExitAnimation">@anim/slide_out_down</item>
</style>

其中,BottomDialog是自定义的Dialog样式名称,windowIsFloating设置为false表示Dialog不浮在activity之上,windowNoTitle表示Dialog没有标题栏,windowBackground设置为透明色,windowAnimations设置为Dialog的进出动画,background设置为透明色,windowSoftInputMode设置为stateUnspecified|adjustResize表示弹出Dialog时不会挤压当前界面的布局,windowIsTranslucent设置为true表示Dialog的背景为透明,windowContentOverlay设置为null表示Dialog的内容不会覆盖系统状态栏。

2 创建Dialog对象

在Java代码中创建Dialog对象,并设置样式:

Dialog dialog = new Dialog(context, R.style.BottomDialog);
dialog.setContentView(R.layout.your_layout);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);

其中,setContentView方法设置Dialog的布局文件,setCancelable方法设置是否可以通过返回键关闭Dialog,setCanceledOnTouchOutside方法设置是否可以通过点击Dialog外部关闭Dialog。 

3 显示Dialog

dialog.show();

将上面那两篇教程中的布局文件复制过来即可,也就是R.layout.your_layout

另附上:上面两个角圆角化的代码:

<?xml version="1.0" encoding="utf-8"?>
<!-- arc_shape.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

   <!-- 用于绘制上部分的两个角弧形-->
    <corners
            android:topLeftRadius="15dp"
            android:topRightRadius="15dp" />

    <!-- 填充的颜色 -->
    <solid android:color="@android:color/white" />

</shape>

 原创文章,转载请注明出处

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安卓可以通过继承 Dialog 类,自定义底部选择的样式和内容,然后在 Dialog 中实现底部的效果。以下是一个简单的示例: 1. 首先,在 res/layout 目录下新建一个布局文件(例如:custom_picker_layout.xml),用来定义选择的样式和内容; 2. 创建一个继承自 Dialog 类的自定义 Dialog 对象(例如:CustomPickerDialog),并在其中实现底部的效果; 3. 在 CustomPickerDialog 中加载布局文件,并设置 Dialog 的宽度和高度,以及的位置(例如:底部居中); 4. 显示 CustomPickerDialog。 示例代码如下: ```java public class CustomPickerDialog extends Dialog { public CustomPickerDialog(Context context) { super(context, R.style.BottomDialogStyle); // 加载自定义布局文件 View view = LayoutInflater.from(context).inflate(R.layout.custom_picker_layout, null); // 设置 Dialog 的内容 setContentView(view); // 设置 Dialog 的属性 Window window = getWindow(); if (window != null) { // 设置 Dialog 的宽度和高度 WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setAttributes(layoutParams); // 设置 Dialog位置(底部居中) window.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); // 设置 Dialog 的动画效果 window.setWindowAnimations(R.style.BottomDialogAnimation); } } } ``` 注意:上述示例代码中的 BottomDialogStyle 和 BottomDialogAnimation 分别是自定义Dialog 样式和动画效果,可以根据实际情况替换为对应的样式和动画。另外,底部的选择也可以使用 PopupWindow 实现,具体实现方式类似。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值