Popupwindow的使用

原创 2016年08月29日 11:43:36

PopupWindow在Android.widget包下,项目中经常会使用到PopupWindow做菜单选项  PopupWindow这个类用来实现一个弹出框,以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。

效果图:


Java代码:

MainActivity.java

public class MainActivity extends Activityimplements OnClickListener {

 

         private PopupWindowmPopWindow;

         private View parentView;

         private Context context;

         ImageView mImageViewBar;

 

         @Override

         protected voidonCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   requestWindowFeature(Window.FEATURE_NO_TITLE);

                   setContentView(R.layout.activity_main);

                   context = this;

                   initView();

      }

 

      private voidinitView() {

        // TODOAuto-generated method stub

          parentView =getLayoutInflater().inflate(R.layout.activity_main,null);

          mImageViewBar =(ImageView) findViewById(R.id.menu);

          mImageViewBar.setOnClickListener(this);

          showPopupWindow();

     }

 

      private voidshowPopupWindow() {

           LayoutInflater inflater = (LayoutInflater)context

            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

          View contentView =inflater.inflate(R.layout.popuplayout,null);

          mPopWindow = newPopupWindow(contentView);

          mPopWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);

          mPopWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

          mPopWindow = newPopupWindow();

          // 设置SelectPicPopupWindowView

          mPopWindow.setContentView(contentView);

          // 设置SelectPicPopupWindow弹出窗体的宽

          mPopWindow.setWidth(LayoutParams.WRAP_CONTENT);

          // 设置SelectPicPopupWindow弹出窗体的高

          mPopWindow.setHeight(LayoutParams.WRAP_CONTENT);

          // 设置SelectPicPopupWindow弹出窗体可点击

         mPopWindow.setFocusable(true);

         mPopWindow.setOutsideTouchable(true);

         // 刷新状态

         mPopWindow.update();

         // 实例化一个ColorDrawable颜色为半透明

         ColorDrawable dw = newColorDrawable(0000000000);

         // back键和其他地方使其消失,设置了这个才能触发OnDismisslistener,设置其他控件变化等操作

         mPopWindow.setBackgroundDrawable(dw);

         contentView.findViewById(R.id.memu1).setOnClickListener(this);

         contentView.findViewById(R.id.memu2).setOnClickListener(this);

         contentView.findViewById(R.id.memu3).setOnClickListener(this);

      }

 

       @Override

      public voidonClick(View v) {

         int id =v.getId();

         switch (id) {

           case R.id.menu:

                 mPopWindow.showAsDropDown(mImageViewBar);

                 break;

           case R.id.memu1: {

                 Toast.makeText(context,"消息", Toast.LENGTH_SHORT).show();

                 mPopWindow.dismiss();

               }

                break;

           case R.id.memu2: {

                Toast.makeText(context,"收藏", Toast.LENGTH_SHORT).show();

                mPopWindow.dismiss();

              }

               break;

           case R.id.memu3: {

                Toast.makeText(context,"首页", Toast.LENGTH_SHORT).show();

                mPopWindow.dismiss();

              }

               break;

             }

      }

  

      @Override

       protected voidonDestroy() {

           // TODOAuto-generated method stub

            super.onDestroy();

           mPopWindow.dismiss();

     }

  }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="#FFFFFF"

    android:orientation="vertical">

 

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:background="#E4E4E4"

        android:minHeight="55dp">

 

        <ImageView

            android:layout_width="20dp"

            android:layout_height="20dp"

            android:layout_centerVertical="true"

            android:layout_marginLeft="8dp"

            android:layout_marginRight="5dp"

            android:focusable="true"

            android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha"/>

 

        <ImageView

            android:id="@+id/menu"

            android:layout_width="20dp"

            android:layout_height="20dp"

            android:layout_alignParentRight="true"

            android:layout_centerVertical="true"

            android:layout_marginRight="9dp"

            android:src="@drawable/top_arrow_message1"/>

    </RelativeLayout>

 

</LinearLayout>

popuplayout.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:gravity="center"

    android:orientation="vertical">

 

    <LinearLayout

        android:layout_width="120dp"

        android:layout_height="130dp"

        android:layout_marginRight="2dp"

        android:background="@drawable/danchu"

        android:gravity="center_vertical"

        android:orientation="vertical">

 

        <RelativeLayout

            android:id="@+id/memu1"

            android:layout_width="wrap_content"

            android:layout_height="30dp"

            android:layout_marginTop="5dp"

            android:gravity="center_vertical">

 

            <ImageView

                android:id="@+id/xiaoxi"

                android:layout_width="20dp"

                android:layout_height="20dp"

                android:layout_marginLeft="10dp"

                android:src="@drawable/android_arrow_application"/>

 

            <TextView

                android:id="@+id/pop_computer"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="10dp"

                android:layout_toRightOf="@+id/xiaoxi"

                android:text="消息"

                android:textColor="#FFFFFF"/>

        </RelativeLayout>

 

        <View

            android:layout_width="wrap_content"

            android:layout_height="1dp"/>

 

        <RelativeLayout

            android:id="@+id/memu2"

            android:layout_width="wrap_content"

            android:layout_height="30dp"

            android:layout_marginTop="5dp"

            android:gravity="center_vertical">

 

            <ImageView

                android:id="@+id/shanchu"

                android:layout_width="20dp"

                android:layout_height="20dp"

                android:layout_marginLeft="10dp"

                android:src="@drawable/android_arrow_profitbillsm"/>

 

            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="10dp"

                android:layout_toRightOf="@+id/shanchu"

                android:text="收藏"

                android:textColor="#FFFFFF"/>

        </RelativeLayout>

 

        <View

            android:layout_width="wrap_content"

            android:layout_height="1dp"/>

 

        <RelativeLayout

            android:id="@+id/memu3"

            android:layout_width="wrap_content"

            android:layout_height="30dp"

            android:layout_marginBottom="5dp"

            android:layout_marginTop="5dp"

            android:gravity="center_vertical">

 

            <ImageView

                android:id="@+id/dianjifanhui"

                android:layout_width="18dp"

                android:layout_height="20dp"

                android:layout_marginLeft="10dp"

                android:src="@drawable/dir15"/>

 

            <TextView

                android:id="@+id/pop_manage"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="10dp"

                android:layout_toRightOf="@+id/dianjifanhui"

                android:text="首页"

                android:textColor="#FFFFFF"/>

        </RelativeLayout>

 

        <View

            android:layout_width="wrap_content"

            android:layout_height="1dp"/>

    </LinearLayout>

 

</LinearLayout>


项目源码:

Eclipse: http://download.csdn.net/detail/dickyqie/9615658

AndroidStudio: https://github.com/DickyQie/android-basic-control







版权声明:本文为博主原创文章,未经博主允许不得转载。

popupwindow的使用

  • 2016年01月29日 17:27
  • 6.08MB
  • 下载

Android PopupWindow使用

  • 2017年06月11日 18:15
  • 19.17MB
  • 下载

PopupWindow 属性,我们的使用的途径

今天看到了,比人写的一个Demo,看到了之后感觉还不错,自己也是仔细的思考了一哈,其实这样的用途也是比较的多的嘛。 使用PopupWindow可实现弹出窗口效果,,其实和AlertDialog一样,也...

PopupWindow的使用

  • 2016年11月15日 12:57
  • 1.39MB
  • 下载

[未完待续] 跳出 PopupWindow 使用过程中的坑

跳出 PopupWindow 使用过程中的坑遇到异常 Exception在做页面首次使用引导需求时使用 PopupWindow 来实现,没想到测试过程中一直遇到这两种异常而崩溃: android.vi...
  • TorchMu
  • TorchMu
  • 2017年05月10日 11:21
  • 140

使用PopupWindow实现的通用弹窗

  • 2016年03月04日 10:30
  • 1.65MB
  • 下载

PopupWindow的简单使用(结合RecyclerView)

Android弹窗: 在Android中弹出式菜单(以下称弹窗)是使用十分广泛一种菜单呈现的方式,弹窗为用户交互提供了便利。关于弹窗的实现大致有以下两种方式AlertDialog和PopupWindo...

PopupWindow的简单使用

  • 2015年08月21日 15:54
  • 251KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Popupwindow的使用
举报原因:
原因补充:

(最多只允许输入30个字)