我创建了这个d出菜单,但缺少背景阴影.我该如何添加一些?如果阴影只在左侧和底部,那将会很酷.
这是一张图片:您可以看到d出窗口的颜色和工具栏下方活动的背景齐头并进.
这是我的代码:
活动片段
public voID showPopup(final MenuItem menuItem) { VIEw vIEw = findVIEwByID(R.ID.action_alarm); LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); VIEw popupVIEw = layoutInflater.inflate(R.layout.popup, null); final ListVIEw ListVIEw = (ListVIEw) popupVIEw.findVIEwByID(R.ID.ListVIEw); String[] functions = {getString(R.string.benachrichtigung), getString(R.string.benachrichtigungUm)}; final listadapter adapter = new CustomPopupAdapter(this, functions, ListVIEw); ListVIEw.setAdapter(adapter); ListVIEw.setonItemClickListener(new AdapterVIEw.OnItemClickListener() { @OverrIDe public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { TextVIEw tv = (TextVIEw) ListVIEw.getChildAt(1).findVIEwByID(R.ID.tvTime); showTimePickerDialog(tv); } }); PopupWindow popupWindow = new PopupWindow( popupVIEw, VIEwGroup.LayoutParams.WRAP_CONTENT, VIEwGroup.LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(new BitmapDrawable()); popupWindow.setoutsIDetouchable(true); popupWindow.showAsDropDown(vIEw); }
popup.xml
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:padding="5dp" androID:background="@color/white"> <ListVIEw androID:ID="@+ID/ListVIEw" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"> </ListVIEw></relativeLayout>
编辑:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LolliPOP) { popupWindow.setBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.shadow_192256)); } else { popupWindow.setBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.shadow_192256)); }
解决方法:
前几天我遇到了同样的问题:)这就是我解决它的方法.以下链接将带您到一个网站,您可以随心所欲地生成阴影:)
http://inloop.github.io/shadow4android/
这是一个9补丁图片:)一旦完成,你所要做的就是:)
display display = (yourActivity.getwindowManager().getDefaultdisplay(); Point size = new Point(); display.getSize(size); int wIDth = size.x; int height = size.y; Resources resources = yourActivity.getResources(); int navigationbarHeight = 0; int statusbarHeight = 0; int resourceID = resources.getIDentifIEr("navigation_bar_height", "dimen", "androID"); if (resourceID > 0) { navigationbarHeight = resources.getDimensionPixelSize(resourceID); } resourceID = resources.getIDentifIEr("status_bar_height", "dimen", "androID"); if (resourceID > 0) { statusbarHeight = resources.getDimensionPixelSize(resourceID); } popupWindow = new PopupWindow(yourActivity); popupWindow.setContentVIEw(yourlayout); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LolliPOP) { popupWindow.setBackgroundDrawable(resources.getDrawable(R.drawable.shadow, yourActivity.gettheme())); } else { popupWindow.setBackgroundDrawable(resources.getDrawable(R.drawable.shadow)); } popupWindow.setWIDth(wIDth - 20);//20 is padding i have added 10 from right 10 from left popupWindow.setHeight(height - (navigationbarHeight +40)); popupWindow.setoutsIDetouchable(true); popupWindow.setFocusable(true); popupWindow.showAtLocation(youractivityVIEw, Gravity.CENTER, 0, statusbarHeight);
多数民众赞成:)你完成了:)
总结以上是内存溢出为你收集整理的Androidd出菜单阴影全部内容,希望文章能够帮你解决Androidd出菜单阴影所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)