一直想用一下PopupWindow,就是苦于没有demo,自己去研究有太懒,刚好最近研究推送,下载了一个腾讯信鸽的demo,里面用到了一个PopupWindow,效果还不错,弄下来记录一下:
1.核心java代码如下:
View v = LayoutInflater.from(this).inflate(R.layout.menu_item, null); //加载popupwindow的自定义view final PopupWindow pw = new PopupWindow(v, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); pw.setContentView(v); pw.setOutsideTouchable(true); pw.setFocusable(true); pw.setBackgroundDrawable(new BitmapDrawable()); pw.showAsDropDown(findViewById(R.id.img_right)); //现在是img_right这个view的下面
2.下面是menu_item这个layout的内容
<?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/qq_dimen_330px" android:layout_height="wrap_content" android:layout_gravity="right" android:background="@android:color/transparent" android:orientation="vertical" > <LinearLayout android:layout_width="@dimen/qq_dimen_330px" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:background="@android:color/black" android:orientation="vertical" > <TextView android:id="@+id/action_device_token" android:layout_width="match_parent" android:layout_height="@dimen/qq_dimen_80px" android:gravity="center" android:singleLine="true" android:text="@string/action_device_token" android:textColor="@android:color/white" /> <View android:layout_width="match_parent" android:layout_height="1px" android:background="@color/fuxk_base_divide_line_color" /> <TextView android:id="@+id/action_help_center" android:layout_width="match_parent" android:layout_height="@dimen/qq_dimen_80px" android:gravity="center" android:singleLine="true" android:text="@string/action_help_center" android:textColor="@android:color/white" /> <View android:layout_width="match_parent" android:layout_height="1px" android:background="@color/fuxk_base_divide_line_color" /> <TextView android:id="@+id/action_about_us" android:layout_width="match_parent" android:layout_height="@dimen/qq_dimen_80px" android:gravity="center" android:singleLine="true" android:text="@string/action_about_us" android:textColor="@android:color/white" /> <View android:layout_width="match_parent" android:layout_height="1px" android:background="@color/fuxk_base_divide_line_color" /> <TextView android:id="@+id/action_clear" android:layout_width="match_parent" android:layout_height="@dimen/qq_dimen_80px" android:gravity="center" android:singleLine="true" android:text="@string/action_clear" android:textColor="@android:color/white" /> <View android:layout_width="match_parent" android:layout_height="1px" android:background="@color/fuxk_base_divide_line_color" /> <TextView android:id="@+id/action_setting" android:layout_width="match_parent" android:layout_height="@dimen/qq_dimen_80px" android:gravity="center" android:singleLine="true" android:text="@string/action_setting" android:textColor="@android:color/white" /> <View android:layout_width="match_parent" android:layout_height="1px" android:background="@color/fuxk_base_divide_line_color" /> <TextView android:id="@+id/action_diagnosis" android:layout_width="match_parent" android:layout_height="@dimen/qq_dimen_80px" android:gravity="center" android:singleLine="true" android:text="@string/action_diagnosis" android:textColor="@android:color/white" /> </LinearLayout> </RelativeLayout>
对应的布局效果为:
这个地方比较好的是,不用自己去制定popupwindow的显示位置了,直接在layout中定位显示,感觉会比自己代码设定位置好些