实现底部弹出菜单

想实现一个自底部弹出的菜单,菜单中有一个类似ListView的选择列表,一开始就想到了AlertDialog,因为以前做过这样的界面,直接在里面加多Items,想着给加个Animation效果就可以了,应该简单的很,结果比较悲剧,先是无法自定义Dialog的大小,后来才知道要先调用show()方法,再设置Dialog的属性,这个用法好蛋疼啊,大小总算是解决了。后来又发现无法使AlertDialog的底部紧靠在屏幕底部,总是有一段距离,并且距离左右的边框也有一定的距离,如图


window.setGravity(Gravity.BOTTOM);这行代码好像效果也不是那么明显

实在找不到解决办法,那就不用AlertDialog了,还是用Popupwindow吧,底部与左右无法对齐的问题解决了,通过自定义布局页面也实现了,可是无法实现item的点击,获取不到焦点,原来是这个问题,在构造函数中,加上这个,也就是后面设为true,即允许获得焦点

PopupWindow mPopupWindow = new PopupWindow(music_popunwindwow,(int) (mWidth*0.8), LayoutParams.WRAP_CONTENT, true);

获取不到焦点的问题解决了,可无法在点击其它位置使这个Window消失,并且点击返回键是返回前一个Activity,而不是使这个Window消失,后经百度,原来要加上这么一句

mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.appwidget_bg));

这一句跟上面那一句缺一不可,这样之前遇到的那两个问题都解决掉了

效果如下图


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值