关于弹出窗口的输入法挡住按钮问题

网上一般提供的两种方法都是调整edittext控件的高度

方案一、把整个布局文件用ScrollView套住。这样当你聚焦时虽然输入法也能够挡住一些输入框,但是你可以通过手动滑动看被挡住的内容。

方案二、在Activity中设置android:windowSoftInputMode="adjustResize" 解释: 使得该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间。就是把布局内容顶上去一遍能够看到界面的所有内容,而不会被键盘遮挡


我们实际的需求是输完内容,可以直接点按钮提交。就是说edittext下有个按钮,我们需要看到。。。

先看下如下两张图,第一张,是弹出来的popupwindow ,黄色的edittext和下边的2个按钮。。

第二张是输入法弹出来后的效果。我们的需求就是如此:



如何实现了?方法如下,点击一个按钮调用下边的方法弹出popupwindow。。

private void popup() {
if (pWindow == null) {
View view = LayoutInflater.from(this).inflate(R.layout.mypopup,
null);
pWindow = new PopupWindow(view, ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
pWindow.setFocusable(true);
pWindow.setBackgroundDrawable(new BitmapDrawable());
pWindow.setTouchable(true);
pWindow.setOutsideTouchable(false);
pWindow.setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
editText = (EditText) view.findViewById(R.id.etmsg);
view.findViewById(R.id.btnsend).setOnClickListener(this);
view.findViewById(R.id.btncancel).setOnClickListener(this);
}
pWindow.showAtLocation(getCurrentFocus(), Gravity.CENTER, 0, 0);
}

其中 ,mypopup.xml文件如下。原理很简单,就是让2个按钮的布局覆盖在edittext上边。。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <EditText
        android:id="@+id/etmsg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:lines="15"
        android:background="#ffff00"
        android:paddingBottom="50dp"
         >
    </EditText>
    <LinearLayout
        android:layout_gravity="bottom"
        android:layout_height="50dp"
        android:background="#00ff00"
        android:layout_width="match_parent"
        >
        <Button
            android:id="@+id/btnsend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="send" />
        <Button
            android:id="@+id/btncancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="cancel" />
    </LinearLayout>
</FrameLayout>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值