原帖地址: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源码——Android之用PopupWindow实现弹出菜单.zip
Android PopupWindow实现弹出菜单.zip
Android源码——PopupWindow实现弹出菜单.zip
之用PopupWindow实现弹出菜单.zip
在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样。它实现更多菜单选项的显示和分栏。其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个GridView控件,一个是菜单标题栏,一...
Android之用PopupWindow实现弹出菜单.rar
android页面开发中会碰到这种需求:点击页面顶部工具栏某个按钮时需要弹出下拉菜单。该工程利用PopupWindow实现了点击工具栏弹出下拉菜单的功能的主要实现类 .
安卓开发-Android之用PopupWindow实现弹出菜单.zip
安卓Android源码——用PopupWindow实现弹出菜单.zip
Android之用PopupWindow实现弹出菜单.zip源码资源下载Android之用PopupWindow实现弹出菜单.zip源码资源下载
Android之用PopupWindow实现弹出菜单.zip
myandroidmenu_PopupWindow实现Android应用的弹出菜单.rar
很多应用采用的底部弹出菜单实现,通过自定义PopupWindow实现
Android之用PopupWindow实现弹出listview形式菜单.rar
android页面开发中会碰到这种需求:点击页面顶部工具栏某个按钮时需要弹出下拉菜单。该工程利用PopupWindow实现了点击工具栏弹出下拉菜单的功能。
使用PopupWindow实现页面点击顶部弹出下拉菜单
Android应用源码之用PopupWindow实现弹出菜单.zip