android Popupwindow 的一个demo源码

一直想用一下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中定位显示,感觉会比自己代码设定位置好些

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。