原帖地址:http://www.cnblogs.com/dolphin0520/p/3153501.html
如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
在android中有时候可能要实现一个底部弹出菜单,此时可以考虑用PopupWindow来实现。下面就来介绍一下如何使用PopupWindow实现一个弹出窗。
主Activity代码:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到弹出菜单的view,login_setting_popup是弹出菜单的布局文件
View view = getLayoutInflater().inflate(R.layout.login_setting_popup, null);
//初始化弹出菜单
popWindow = new PopupWindow(view, WindowManager.LayoutParams.FILL_PARENT,WindowManager.LayoutParams.WRAP_CONTENT,false);
//设置可以获取焦点,否则弹出菜单中的EditText是无法获取输入的
popWindow.setFocusable(true);
//这句是为了防止弹出菜单获取焦点之后,点击activity的其他组件没有响应
popWindow.setBackgroundDrawable(new BitmapDrawable());
//防止虚拟软键盘被弹出菜单遮住
popWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
//在底部显示
popWindow.showAtLocation(this,Gravity.BOTTOM, 0, 0);
}
login_setting_popup.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#eeeeee">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="20dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0.2"
android:textSize="12sp"
android:gravity="center_vertical"
android:textColor="@android:color/black"
android:text="服务器地址">
</TextView>
<EditText
android:id="@+id/login_setting_adderss_et"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="20dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0.2"
android:textSize="12sp"
android:textColor="@android:color/black"
android:gravity="center_vertical"
android:text="GPS">
</TextView>
<RadioGroup
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="0.8">
<RadioButton
android:id="@+id/open_gps_rb"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="12sp"
android:textColor="@android:color/black"
android:checked="true"
android:text="打开">
</RadioButton>
<RadioButton
android:id="@+id/close_gps_rb"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="12sp"
android:layout_marginLeft="20dp"
android:textColor="@android:color/black"
android:text="关闭">
</RadioButton>
</RadioGroup>
</LinearLayout>
</LinearLayout>
这样就可以实现一个底部弹出菜单了。但是在用PopupWindow实现底部弹出菜单的时候要注意几个问题:
1)如果弹出菜单中有EditText这种输入控件,如果不给PopupWindow设置可获取焦点的话,EditText是无法获取输入的。
2)一定要设置 虚拟软键盘随需要更改屏幕显示内容的大小,否则虚拟软键盘会被底部弹出菜单遮挡住。
3)如果设置了PopupWindow可获取焦点的话,此时会遇到一个问题就是当PopupWindow中的控件比如EditText获取焦点之后,点击PopupWindow之外的控件是不会有响应的,如果用setBackgroundDrawable(new BitmapDrawable())进行设置的话,则不会出现这种情况。
本文链接:http://www.cnblogs.com/dolphin0520/p/3153501.html,转载请注明。
分享到:
相关推荐
本资料包"Android源码——PopupWindow实现弹出菜单.zip"主要聚焦于如何利用`PopupWindow`来创建自定义的弹出菜单。下面将详细介绍`PopupWindow`的基本概念、工作原理以及实现弹出菜单的关键步骤。 `PopupWindow` 是...
在安卓开发中,`PopupWindow` 是一个非常实用的组件,它允许开发者在屏幕上创建一个浮动、临时的视图,可以用来实现各种交互效果,如弹出菜单、提示信息等。这个压缩包“安卓Android源码——Android之用PopupWindow...
综上所述,"Android PopupWindow实现弹出菜单.zip"这个资源很可能是教你如何利用PopupWindow在Android应用中创建功能丰富的弹出菜单,包括如何定义布局、设置动画、响应用户交互以及优化用户体验。如果你正在开发...
本资料"Android之用PopupWindow实现弹出菜单.zip"聚焦于如何利用PopupWindow来创建弹出菜单,以增强用户交互体验。 一、PopupWindow基础 1. PopupWindow概述:PopupWindow是Android提供的一个可以显示任意视图的类...
在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样。它实现更多菜单选项的显示和分栏。其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个GridView控件,一个是菜单标题栏,一...
在Android开发中,有时我们需要创建一个可自定义的弹出菜单,这通常通过使用`PopupWindow`类来实现。`PopupWindow`是Android系统提供的一个轻量级窗口,它可以显示在屏幕上的任意位置,用于创建浮动、弹出式的UI组件...
本资料"Android之用PopupWindow实现弹出菜单.rar"将深入探讨如何利用PopupWindow创建弹出菜单。 1. **PopupWindow基本概念** PopupWindow是Android SDK提供的一种轻量级窗口,它可以在屏幕任意位置显示一个视图,...
在Android开发中,PopupWindow是一种常用的UI组件,用于在界面上创建临时的、浮动的视图,常用于实现各种弹出式菜单、下拉选择器等。本资料包"Android代码-之用PopupWindow实现弹出菜单.zip"显然是为了演示如何在...
本教程将详细介绍如何利用PopupWindow实现右侧、左侧和底部弹出菜单,以提供丰富的交互体验。 首先,我们来理解一下PopupWindow的基本概念。PopupWindow是Android中的一个类,它允许开发者创建浮动的窗口,可以显示...
android页面开发中会碰到这种需求:点击页面顶部工具栏某个按钮时需要弹出下拉菜单。该工程利用PopupWindow实现了点击工具栏弹出下拉菜单的功能的主要实现类 .
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来实现各种形式的弹出窗口,如下拉菜单、提示框等。本教程将详细讲解如何使用`PopupWindow`来创建一个以`ListView`形式展示的菜单。首先,我们需要...
本文将深入探讨如何利用PopupWindow来实现弹出菜单,并结合给定的源码资源进行分析。 首先,PopupWindow的基本使用涉及到以下几个关键步骤: 1. **创建PopupWindow对象**: 在Java代码中,我们首先需要实例化一个...
综上所述,本项目源码主要展示了如何利用PopupWindow来实现一个弹出菜单,这涉及到对PopupWindow的基本属性设置、内容填充、显示位置控制以及交互事件处理等多个方面。理解并掌握这些知识点对于提升Android应用的...
本篇将深入探讨如何利用`PopupWindow`来实现一个自定义的底部弹出式菜单。 首先,`PopupWindow`的基本用法包括初始化、设置布局、显示和隐藏等步骤。在自定义底部菜单时,我们需要创建一个包含菜单项的布局文件,每...
在Android应用开发中,弹出菜单(PopupWindow)是一种常用的功能,它可以在用户与界面交互时显示临时的、非模态的视图。本资源"myandroidmenu_PopupWindow实现Android应用的弹出菜单.rar"提供了如何使用PopupWindow...
在Android开发中,`PopupWindow` 是一个非常实用的组件,它可以用来创建各种弹出式菜单或对话框。本文将详细介绍如何使用`PopupWindow`在Android应用中模仿微信右上角的弹出菜单效果。 首先,我们需要理解`...
这就是"android利用PopupWindow实现工具栏弹出菜单"这一主题所涵盖的内容。PopupWindow是Android SDK提供的一种轻量级的窗口组件,它可以在Activity的任意位置弹出,并且可以自定义显示内容,非常适合用来实现类似...
在Android开发中,软键盘与PopupWindow的交互是一个常见的需求,特别是在需要在悬浮窗口中提供输入功能时。本文将深入探讨如何实现“软键盘顶起popupWindow”这一功能,以及如何在popupWindow内部包含一个输入框。 ...
在Android应用开发中,PopupWindow是一个非常实用的组件,它能帮助我们实现各种形式的弹出菜单、下拉选择器等交互元素。本项目“Android之用PopupWindow实现弹出菜单”是一个源码示例,适合于毕业设计或移动开发App...