制作菜单时,我用了dialog加载一个view的方式,但是总是会出现一些黑色阴影,消除方法其实很简单;
首先在style.xml文件里面定义一下dialgo样式,如果没有就新建一下
style.xml
<style name="Dialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> <!--边框--> <item name="android:windowIsFloating">true</item> <!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">true</item><!--半透明--> <item name="android:background">@android:color/transparent</item><!--背景透明--> <item name="android:windowBackground">@android:color/transparent</item><!--背景透明--> <item name="android:backgroundDimEnabled">true</item> <!--蒙版- 模糊 --> </style>
java里创建 dialog的时候直接加载就好了
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) { Dialog dialog_about = new Dialog(LinkMap.this, R.style.Dialog);// 去白框dialog里面具体设置样式 dialog_about.setContentView(MenuView()); // 定义dialog大小跟位置(默认Gravity是局中) Window dialogWindow = dialog_about.getWindow(); dialogWindow.setGravity(Gravity.BOTTOM | Gravity.BOTTOM); dialog_about.setCanceledOnTouchOutside(true);// 设置点击Dialog外部任意区域关闭Dialog dialog_about.show(); Log.i("menuview", "Menuclick"); } if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); return false; } return false; }
menuview
// 菜单view public View MenuView() { View view = super.getLayoutInflater().inflate(R.layout.aboutview, null); // 登录/注册 ImageButton btnlogin = (ImageButton) view.findViewById(R.id.btnlogin); btnlogin.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent = new Intent(LinkMap.this, Login.class); startActivity(intent); } });
ok了。。