想一下,怎么才能够实现,在一个Activity上面有一个Dialog,是用来显示滑动的日期,并且Dialog的位置不是处在屏幕的最上方或最下方,就像下图:
图1
图2
先来分析一下:
1.首先从图中能看出有一个Activity,一个关于Date的Dialog;
2.Dialog显示在Activity的上方,并且没有全部遮挡Activity;
3.Dialog并不是直接在屏幕的上方或下方或中间;
实现过程:
1.先实现DateDialog部分:
Android自带的有DatePicker(日期选择器),在我的模拟器上,使用DatePicker,是如下显示
我发觉,Android自带的DatePicker,并不符合我要实现的效果,那只能用自定义View了;
我们要做的自定义View,是如上图2的样子,对于布局和逻辑部分,我借鉴了别人的博客,地址为
https://github.com/liuwan1992/CustomDatePicker
他实现的就是Dialog遮挡Activity显示,位置在屏幕的下方;
而要实现我的效果图的话,只需要:
1.Dialog不遮挡Activity,
<item name="android:windowIsFloating">false</item><!-- 是否浮现在activity之上 -->
windowIsFloating属性设置为false, 默认将Window设置成全屏大小,设置为true,则window大小为wrap_content。
当然,只将这个属性设置为false,结果就会把整个Activity都遮住了,怎么才能让Dialog不遮挡Activity呢,给Dialog一个高度
lp.height = 800;
Dialog有了固定值后,就显示这么大,高度就不会为match_parent,就解决了一个问题;
2.给Dialog设置距离上方或者下方多少,
lp.y = 500;
y轴的距离,如果用的是BOTTOM,lp.y = 500;就是相对于下方500dp的距离;window.setGravity(Gravity.BOTTOM);
如果window.setGravity(Gravity.TOP);
用的是TOP,lp.y = 500;就是相对于上方500dp的距离。
以上就能实现效果。