`
yunshangbuhe
  • 浏览: 226860 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PopupWindow 使用及延伸

阅读更多
PopupWindow

[功能]
PopupWindow 作为一种用户提醒 而且其开销也比Activity要小


[代码 步骤]
1. 定义布局 供PopupWindow使用 如:hello.xml

Java代码
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    >  
<ImageView    
    android:id="@+id/image" 
    android:layout_width="wrap_content"   
    android:layout_height="wrap_content"   
    android:src="@drawable/robot" />  
<LinearLayout   
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingLeft="20dip" 
    >  
<TextView    
    android:layout_width="wrap_content"   
    android:layout_height="wrap_content"   
    android:text="HelloPop!" 
    />  
<Button    
    android:id="@+id/helloButton" 
    android:layout_width="100dip"   
    android:layout_height="wrap_content"   
    android:text="OK" 
    />  
</LinearLayout>  
</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    >
<ImageView 
        android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/robot" />
<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="20dip"
    >
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="HelloPop!"
    />
<Button 
        android:id="@+id/helloButton"
    android:layout_width="100dip"
    android:layout_height="wrap_content"
    android:text="OK"
    />
</LinearLayout>
</LinearLayout>

2. 通过LayoutInflater 得到hello.xml 的 View view
Java代码
view = this.getLayoutInflater().inflate(R.layout.hello, null); 

view = this.getLayoutInflater().inflate(R.layout.hello, null);
3. 创建PopupWindow pop 使用上面布局文件view
Java代码
pop = new PopupWindow(view,500,200); 

pop = new PopupWindow(view,500,200);
4. 弹出PopupWindow
* 定义布局文件:main.xml 包括一个Button
Java代码
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:id="@+id/main" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >  
<TextView    
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="pop demo!" 
    />  
<Button    
    android:id="@+id/button" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="to pop!" 
    />  
</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/main"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="pop demo!"
    />
<Button 
        android:id="@+id/button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="to pop!"
    />
</LinearLayout>


* 弹出:有2种方式:一个是下拉方式 一个是指定位置
- 下拉:
Java代码
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {  

              
            public void onClick(View v) {  
                    // TODO Auto-generated method stub  
                pop.showAsDropDown(v);  
            }  
    
    }); 

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
           
            public void onClick(View v) {
                    // TODO Auto-generated method stub
                    pop.showAsDropDown(v);
            }
 
    });

- 指定位置:
Java代码
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {  
              
            public void onClick(View v) {  
                    // TODO Auto-generated method stub  
                pop.showAtLocation(findViewById(R.id.main), Gravity.CENTER, 20, 20);  
                  
            }  
    
    }); 

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
           
            public void onClick(View v) {
                    // TODO Auto-generated method stub
                    pop.showAtLocation(findViewById(R.id.main), Gravity.CENTER, 20, 20);
                   
            }
 
    });

5. 取消
Java代码
view.findViewById(R.id.helloButton).setOnClickListener(new View.OnClickListener() {  
              
            public void onClick(View v) {  
                    // TODO Auto-generated method stub  
                pop.dismiss();  
                  
            }  
    
    }); 

view.findViewById(R.id.helloButton).setOnClickListener(new View.OnClickListener() {
           
            public void onClick(View v) {
                    // TODO Auto-generated method stub
                    pop.dismiss();
                   
            }
 
    });
6. 其他问题:
* 发现很多人对PopupWindow 里面包含ListView后 对具体哪个item被点击的获取有疑问 所以就顺便测试一下 发现和普通用法一样啊 没什么特别之处啊 现在把用法和大家分享分享



6.1. 定义包含Spinner 的布局文件 hello.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >  
<LinearLayout   
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    >  
<ImageView    
    android:id="@+id/image" 
    android:layout_width="wrap_content"   
    android:layout_height="wrap_content"   
    android:src="@drawable/robot" />  
<TextView    
    android:layout_width="wrap_content"   
    android:layout_height="wrap_content"   
    android:text="HelloPop!" 
    />  
</LinearLayout>  
<Spinner   
        android:id="@+id/spinner"   
        android:layout_width="wrap_content"   
        android:layout_height="40dip"/>  
</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
<ImageView 
        android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/robot" />
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="HelloPop!"
    />
</LinearLayout>
<Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="40dip"/>
</LinearLayout>
6.2. 得到Spinner的实例:spinner
Java代码
spinner = (Spinner)view.findViewById(R.id.spinner); 

spinner = (Spinner)view.findViewById(R.id.spinner);
6.3. 绑定Spinner与具体数据 本例以联系人为例
Java代码
public void specifySpinner(){  
        Cursor c = getContentResolver().query(People.CONTENT_URI,   
                null, null, null, null);  
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,  
                android.R.layout.simple_list_item_1,c,   
                new String[] {People.NAME},   
                new int[] {android.R.id.text1});  
        adapter.setDropDownViewResource(  
                android.R.layout.simple_spinner_dropdown_item);  
          
          
        spinner.setAdapter(adapter);  
    } 

public void specifySpinner(){
            Cursor c = getContentResolver().query(People.CONTENT_URI,
                null, null, null, null);
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1,c,
                new String[] {People.NAME},
                new int[] {android.R.id.text1});
        adapter.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);
       
       
        spinner.setAdapter(adapter);
    }

6.4. 具体item的获取:
Java代码
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){  
 
            public void onItemSelected(AdapterView<?> adapter,View v,  
                    int pos, long id) {  
                updateTitle(pos);  
            }  
 
            public void onNothingSelected(AdapterView<?> arg0) {  
                // TODO Auto-generated method stub  
                  
            }  
 
        }); 

spinner.setOnItemSelectedListener(new OnItemSelectedListener(){

            public void onItemSelected(AdapterView<?> adapter,View v,
                    int pos, long id) {
                    updateTitle(pos);
            }

                        public void onNothingSelected(AdapterView<?> arg0) {
                                // TODO Auto-generated method stub
                               
                        }

        });


6.5. emulator 运行截图:


分享到:
评论

相关推荐

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

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

    android的popupWindow使用

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

    Android PopupWindow使用示例

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

    Android popupwindow 实例及使用

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

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

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

    Android PopupWindow使用

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

    popupwindow使用

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

    安卓 PopupWindow 简单使用学习

    本篇文章将深入探讨PopupWindow的基本概念、使用方法以及在实际开发中的应用。 首先,PopupWindow的核心在于它的三个基本属性:内容视图(content view)、宽度(width)和高度(height)。内容视图是你希望在...

    popupwindow使用案例

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

    PopupWindow使用,弹出菜单窗口

    下面将详细讲解PopupWindow的使用及其相关知识点。 1. **PopupWindow的基本概念** PopupWindow是一个轻量级的窗口,它不是Activity的一部分,而是直接在应用程序的根视图上显示。PopupWindow包含一个View对象,...

    PopupWindow

    下面将详细介绍PopupWindow的使用方法、特性以及常见应用场景。 1. **PopupWindow的基本结构** PopupWindow主要由三部分组成:内容视图(ContentView)、背景(Background)和锚点(Anchor View)。内容视图是你想...

    PopupWindow的基本使用

    该项目演示了,PopupWindow的基本使用,相关PopupWindow代码有独立的Class文件,并且有大量的注释说明。实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为...

    PopupWindow 使用实例

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

    popupWindow使用

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

    android 之popupWindow的使用

    本文将详细介绍如何在Android应用中使用PopupWindow,包括其基本概念、创建步骤以及常用方法。 首先,PopupWindow是一个可以浮动在Activity之上的窗口,它不依赖于任何布局,可以自由地显示在屏幕的任何位置。通过...

    android:PopupWindow的使用

    在本篇文章中,我们将深入探讨`PopupWindow`的使用方法及其相关知识点。 首先,我们需要了解`PopupWindow`的基本结构。它是一个轻量级的窗口,可以显示在屏幕上的任意位置,并且可以设置是否具有背景、动画效果以及...

    PopupWindow中使用GridView

    在`PopupWindow`中使用`GridView`,首先需要创建一个包含`GridView`的布局文件,然后在`PopupWindow`中加载这个布局。 接下来,我们将`GridView`与数据源关联起来。这通常通过实现`BaseAdapter`或其子类(如`...

    popupwindow项目使用案例

    这个"popupwindow项目使用案例"可能包含了这些基本用法和一些进阶技巧,例如如何结合动画效果使PopupWindow更加生动。在实际应用中,根据需求,还可以扩展更多功能,如添加滑动手势关闭PopupWindow,或者实现...

    android使用popupwindow自定义menu菜单

    在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,为用户提供临时的交互界面,比如模拟系统级的...通过熟练掌握`PopupWindow`的使用,开发者可以更好地控制应用的界面设计和交互逻辑。

Global site tag (gtag.js) - Google Analytics