`

如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 - 海 子

阅读更多
原帖地址: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

    本资料包"Android源码——PopupWindow实现弹出菜单.zip"主要聚焦于如何利用`PopupWindow`来创建自定义的弹出菜单。下面将详细介绍`PopupWindow`的基本概念、工作原理以及实现弹出菜单的关键步骤。 `PopupWindow` 是...

    安卓Android源码——Android之用PopupWindow实现弹出菜单.zip

    在安卓开发中,`PopupWindow` 是一个非常实用的组件,它允许开发者在屏幕上创建一个浮动、临时的视图,可以用来实现各种交互效果,如弹出菜单、提示信息等。这个压缩包“安卓Android源码——Android之用PopupWindow...

    Android PopupWindow实现弹出菜单.zip

    综上所述,"Android PopupWindow实现弹出菜单.zip"这个资源很可能是教你如何利用PopupWindow在Android应用中创建功能丰富的弹出菜单,包括如何定义布局、设置动画、响应用户交互以及优化用户体验。如果你正在开发...

    Android之用PopupWindow实现弹出菜单.zip

    本资料"Android之用PopupWindow实现弹出菜单.zip"聚焦于如何利用PopupWindow来创建弹出菜单,以增强用户交互体验。 一、PopupWindow基础 1. PopupWindow概述:PopupWindow是Android提供的一个可以显示任意视图的类...

    Android之用PopupWindow实现弹出菜单

    在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样。它实现更多菜单选项的显示和分栏。其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个GridView控件,一个是菜单标题栏,一...

    Android之用PopupWindow实现弹出菜单.rar

    本资料"Android之用PopupWindow实现弹出菜单.rar"将深入探讨如何利用PopupWindow创建弹出菜单。 1. **PopupWindow基本概念** PopupWindow是Android SDK提供的一种轻量级窗口,它可以在屏幕任意位置显示一个视图,...

    Android代码-之用PopupWindow实现弹出菜单.zip

    在Android开发中,PopupWindow是一种常用的UI组件,用于在界面上创建临时的、浮动的视图,常用于实现各种弹出式菜单、下拉选择器等。本资料包"Android代码-之用PopupWindow实现弹出菜单.zip"显然是为了演示如何在...

    Android PopupWindow实现右侧、左侧和底部弹出菜单

    本教程将详细介绍如何利用PopupWindow实现右侧、左侧和底部弹出菜单,以提供丰富的交互体验。 首先,我们来理解一下PopupWindow的基本概念。PopupWindow是Android中的一个类,它允许开发者创建浮动的窗口,可以显示...

    android利用PopupWindow实现点击工具栏弹出下拉菜单

    android页面开发中会碰到这种需求:点击页面顶部工具栏某个按钮时需要弹出下拉菜单。该工程利用PopupWindow实现了点击工具栏弹出下拉菜单的功能的主要实现类 .

    Android之用PopupWindow实现弹出listview形式的菜单

    在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来实现各种形式的弹出窗口,如下拉菜单、提示框等。本教程将详细讲解如何使用`PopupWindow`来创建一个以`ListView`形式展示的菜单。首先,我们需要...

    Android之用PopupWindow实现弹出菜单.zip源码资源下载

    本文将深入探讨如何利用PopupWindow来实现弹出菜单,并结合给定的源码资源进行分析。 首先,PopupWindow的基本使用涉及到以下几个关键步骤: 1. **创建PopupWindow对象**: 在Java代码中,我们首先需要实例化一个...

    Android应用源码之用PopupWindow实现弹出菜单.zip

    综上所述,本项目源码主要展示了如何利用PopupWindow来实现一个弹出菜单,这涉及到对PopupWindow的基本属性设置、内容填充、显示位置控制以及交互事件处理等多个方面。理解并掌握这些知识点对于提升Android应用的...

    自定义PopupWindow实现底部弹出式菜单

    本篇将深入探讨如何利用`PopupWindow`来实现一个自定义的底部弹出式菜单。 首先,`PopupWindow`的基本用法包括初始化、设置布局、显示和隐藏等步骤。在自定义底部菜单时,我们需要创建一个包含菜单项的布局文件,每...

    myandroidmenu_PopupWindow实现Android应用的弹出菜单.rar

    在Android应用开发中,弹出菜单(PopupWindow)是一种常用的功能,它可以在用户与界面交互时显示临时的、非模态的视图。本资源"myandroidmenu_PopupWindow实现Android应用的弹出菜单.rar"提供了如何使用PopupWindow...

    android利用PopupWindow实现工具栏弹出菜单

    这就是"android利用PopupWindow实现工具栏弹出菜单"这一主题所涵盖的内容。PopupWindow是Android SDK提供的一种轻量级的窗口组件,它可以在Activity的任意位置弹出,并且可以自定义显示内容,非常适合用来实现类似...

    软键盘顶popupwindow

    在Android开发中,软键盘与PopupWindow的交互是一个常见的需求,特别是在需要在悬浮窗口中提供输入功能时。本文将深入探讨如何实现“软键盘顶起popupWindow”这一功能,以及如何在popupWindow内部包含一个输入框。 ...

    Android之用PopupWindow实现弹出菜单-IT计算机-毕业设计.zip

    在Android应用开发中,PopupWindow是一个非常实用的组件,它能帮助我们实现各种形式的弹出菜单、下拉选择器等交互元素。本项目“Android之用PopupWindow实现弹出菜单”是一个源码示例,适合于毕业设计或移动开发App...

    Android应用源码之之用PopupWindow实现弹出菜单-IT计算机-毕业设计.zip

    在Android应用开发中,PopupWindow是一个非常实用的组件,它能帮助我们实现各种形式的弹出窗口,如下拉菜单、对话框等。这个“Android应用源码之之用PopupWindow实现弹出菜单”的项目,显然是为了教授如何在毕业设计...

Global site tag (gtag.js) - Google Analytics