`
切切歆语
  • 浏览: 30541 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

Popupwindow的使用

阅读更多

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

 

效果图:

 

 

 

 

MainActivity.java

public class MainActivity extends Activityimplements OnClickListener {
 
         private PopupWindow mPopWindow;
         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 void initView() {
        // TODOAuto-generated method stub
          parentView =getLayoutInflater().inflate(R.layout.activity_main,null);
          mImageViewBar =(ImageView) findViewById(R.id.menu);
          mImageViewBar.setOnClickListener(this);
          showPopupWindow();
     }
 
      private void showPopupWindow() {
           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();
          // 设置SelectPicPopupWindow的View
          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 = new ColorDrawable(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 void onClick(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 void onDestroy() {
           // 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>

 

 

源码点击下载

分享到:
评论

相关推荐

    博客《 PopUpWindow使用详解(一)——基本使用》对应源码

    这篇博客《PopUpWindow使用详解(一)——基本使用》及其源码,旨在帮助开发者更好地理解和运用PopupWindow。 首先,PopupWindow的基本概念是关键。它并非一个真正的Android View,而是一个可以显示View的类。通过...

    博客《PopUpWindow使用详解(二)——进阶及答疑》对应源码

    本压缩包文件“BLOG_2”提供了《PopUpWindow使用详解(二)——进阶及答疑》这篇博客的源码,旨在帮助开发者深入理解和实践`PopupWindow`的高级用法以及解决实际开发中遇到的问题。 `PopupWindow`是Android SDK中的一...

    android的popupWindow使用

    本篇文章将详细介绍如何在Android应用中使用PopupWindow,并通过一个具体的案例来演示其基本用法。 首先,PopupWindow是Android SDK提供的一种轻量级的弹窗组件,相比Dialog,它的创建和显示更加灵活。PopupWindow...

    Android PopupWindow使用示例

    下面将详细介绍`PopupWindow`的使用方法及其相关知识点。 首先,`PopupWindow`的创建需要三个基本元素:一个View(内容视图)、一个宽度和一个高度。通常,内容视图是自定义布局,包含了你想要在弹出窗口中展示的...

    PopupWindow使用,弹出菜单窗口

    在“PopupWindow使用,弹出菜单窗口”的主题中,我们可以学习如何利用PopupWindow实现自定义菜单,同时结合图片展示,提升用户体验。通过不断的实践和优化,我们可以将PopupWindow应用到更多的场景,创造出更多样化...

    PopupWindow 使用实例

    **PopupWindow使用场景** 1. **快速菜单**: 当用户长按某个控件时,显示一个包含多个选项的PopupWindow。 2. **下拉选择器**: 如日期选择、颜色选择等,用户点击后显示一个可滚动的选择列表。 3. **浮动提示**: ...

    popupwindow使用

    本教程将深入探讨PopupWindow的基本使用,并结合ListView展示其实战应用。 首先,我们需要理解PopupWindow的三个核心属性:宽度、高度和背景。在创建PopupWindow时,我们可以指定其尺寸,比如设置为WRAP_CONTENT...

    popupWindow使用Demo

    在标题"popupWindow使用Demo"中,我们关注的是如何利用PopupWindow实现类似于微信中点击右上角加号后弹出添加好友列表的功能,以及在底部弹出的PopupWindow效果。 首先,我们来理解PopupWindow的基本用法。...

    popupWindow使用

    在使用PopupWindow时,首先需要创建一个布局文件来定义弹出窗口的内容。这个布局文件可以包含任何你想要显示的View,例如按钮、文本、图片等。然后通过LayoutInflater的inflate方法将布局加载到内存中。 接下来,...

    Android PopupWindow使用方法小结

    本文将深入解析Android PopupWindow的使用方法及其在不同场景下的应用。 首先,PopupWindow的基本用法分为三个主要步骤: 1. 创建PopupWindow对象实例。这通常通过传入一个View对象来实现,这个View将作为...

    Android PopupWindow使用

    本文将详细介绍如何在Android项目中使用PopupWindow。 首先,了解PopupWindow的基本概念。PopupWindow是Android SDK提供的一个类,它可以创建浮动窗口,并且可以在屏幕上的任意位置显示。它不是Activity的一部分,...

    popupwindow使用案例

    在本案例中,我们将深入探讨PopupWindow的使用方法,特别是如何控制其显示位置以及如何构建一个简单的下拉列表。 首先,PopupWindow的核心类`PopupWindow`需要被实例化,传入一个View作为其内容视图。这个View可以...

    Android popupwindow 实例及使用

    在项目`PopWindowTest`中,你可以找到一个完整的PopupWindow使用示例,包括上述所有步骤。通过运行这个例子,你可以更好地理解PopupWindow的工作原理及其在实际开发中的应用。 总之,Android的PopupWindow是一个...

    PopupWindow嵌套Demo

    PopupWindow在Android开发中是一种非常常用的轻量级弹窗组件,它...在实际项目中,不断实践和优化,将使你的PopupWindow使用更加得心应手。在PopupWindowDemo中,你可以找到具体的代码示例,帮助理解并掌握这些知识点。

    关于PopupWindow使用过程中遇到的一些特殊问题的解决方案.zip

    PopupWindow精确计算要显示位置原理和方法;实现带箭头的上下文菜单遇到的坑;Android7.0 PopupWindow的兼容… 方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以...

    Android中PopupWindow使用方法详解

    下面将详细讲解PopupWindow的使用方法及其相关知识点。 首先,创建PopupWindow的基本步骤如下: 1. **初始化PopupWindow**: 首先需要创建一个PopupWindow实例,传入一个View作为内容视图,以及宽度和高度。例如...

    Android PopupWindow使用实例

    【Android PopupWindow 使用详解】 `PopupWindow` 是 Android SDK 提供的一个非常实用的组件,它允许开发者在应用程序中创建可自定义的浮窗,通常用于显示临时的通知或菜单。在这个实例中,我们将深入理解 `...

    安卓popupwindow相关-popupwindow弹出框.rar

    这个压缩包"popupwindow弹出框.rar"包含了一些关于PopupWindow使用的示例代码,尽管可能并未全部验证其可用性,但它们可以作为学习和参考的资源。 首先,让我们深入理解PopupWindow的基本概念。PopupWindow是...

    Android下拉框PopupWindow使用详解

    Android下拉框PopupWindow使用详解 Android下拉框PopupWindow是一种常用的UI组件,用于在移动应用程序中实现下拉框的功能。下面将详细介绍Android下拉框PopupWindow的使用方法和实现原理。 一、PopupWindow的基本...

Global site tag (gtag.js) - Google Analytics