PopMenu的使用
PopupMenu popupMenu = new PopupMenu(this, view);
getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());
popupMenu.show();
-
这里需要注意的是:填充器是特定的填充器,不能使用普通的填充器
-
里面填充过的布局文件必须是menu文件夹下main特定的
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_btn"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/xxx"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
PopupWindow的使用心得
从构造方法中我们可以看出,要使用PopupWindow()就必须要设置三个属性
contentView 要显示的布局
width 设置具体的大小,不设置传入
ViewGroup.LayoutParams.WRAP_CONTENT
height 和宽度一样,必须要设置
下面是一个简单的使用
private void showPopWindow() {
View contentView = View.inflate(this, R.layout.menu, null);
PopupWindow popupWindow = new PopupWindow(this);
popupWindow.setContentView(contentView);
Button btn1 = (Button) contentView.findViewById(R.id.btn_1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "OneX", 1).show();
}
});
popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
// popupWindow.showAsDropDown(btnAmShowmenu);
popupWindow.setOutsideTouchable(true);
popupWindow.showAtLocation((View) btnAmShowmenu.getParent(), Gravity.BOTTOM, 0, 0);
}
context_menu_enter.xml 新建的anim文件夹,里面对应相应的文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="0"
android:fromYDelta="100%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0"
android:toYDelta="0"/>
</set>
<style name="contextMenuAnim" parent="@android:style/Animation.Activity"> <item name="android:windowEnterAnimation">@anim/context_menu_enter</item>
<item name="android:windowExitAnimation">@anim/context_menu_exit</item>
</style>
1、setTouchable(boolean touchable)
设置PopupWindow是否响应touch事件,默认是true,如果设置为false,即会是下面这个结果:(所有touch事件无响应,包括点击事件)
2、setFocusable(boolean focusable)
该函数的意义表示,PopupWindow是否具有获取焦点的能力,默认为False。一般来讲是没有用的,因为普通的控件是不需要获取焦点的,而对于EditText则不同,如果不能获取焦点,那么EditText将是无法编辑的。
所以,我们在popuplayout.xml最底部添加一个EditText,分别演示两段不同的代码,即分别将setFocusable设置为false和设置为true;
3、setOutsideTouchable(boolean touchable)
这个函数的意义,就是指,PopupWindow以外的区域是否可点击,即如果点击PopupWindow以外的区域,PopupWindow是否会消失。
网友评论