当前位置: 首页 > 面试题库 >

软键盘在PopupWindow中包含EditText

常永怡
2023-03-14
问题内容

我汇总了一个简单的测试项目,该项目显示了一个包含EditText的PopupWindow(在Android
2.2上)。如我所料,当我点击EditText时,将显示软键盘。但是,软键盘覆盖了EditText,因此无法平移屏幕以使EditText保持应有的状态。我的代码:

TestAdjustPanActivity.java:

package com.example;

import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.PopupWindow;

public class TestAdjustPanActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final PopupWindow pw = new PopupWindow(this);
        pw.setContentView(getLayoutInflater().inflate(R.layout.popup, null, false));
        pw.setWidth(400);
        pw.setHeight(600);
        pw.setFocusable(true);

        pw.setOutsideTouchable(true);
        pw.setTouchable(true);
        pw.setBackgroundDrawable(new BitmapDrawable());

        // This is the line referred to in the edit:
        pw.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

        findViewById(R.id.main).post(new Runnable() {
            public void run() {
            pw.showAtLocation(findViewById(R.id.main), Gravity.NO_GRAVITY, 0, 0);
            }
        });
    }
}

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

popup.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#666666"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/current_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="300dp" />
    </LinearLayout>

</ScrollView>

…并且我的AndroidManifest.xml确实android:windowSoftInputMode="stateUnspecified|adjustPan"在该应用程序中唯一且唯一的活动的标记中包含该行。

有任何想法吗?与SO相关的其他帖子都没有为我做过。我错过了什么,使视图无法按预期方式平移?

编辑:我尝试按照指示在TestAdjustPanActivity中添加一行,这导致屏幕在我拥有的Android
3.2设备上完美平移。但是,它在我的Android 2.2设备上仍然无法正常运行,这更加令人困惑。


问题答案:

对于将来遇到任何麻烦的人,我最终只使用了一个Dialog而不是PopupWindow,并通过Dialog进行平移以使EditText保持可见。



 类似资料:
  • 我动态创建的PopupWindow包含EditText属性: 使用强制键盘显示: 显示键盘,但没有从键盘接收任何输入(即按下键不添加文本到文本编辑器)和文本编辑器被选中,因为我可以看到光标闪烁。 我已将Focusable设置为false,因为我不希望在弹出窗口外单击时关闭它。我怎样才能让键盘工作?

  • 我有带有edittext字段的自定义模板。当我点击软键盘上的“下一步”按钮时,它只移动了两次焦点--比按钮变成了“确定”。清单有12项。有没有办法导航到所有的项目,而不仅仅是2?你能帮帮我吗? 公共视图getView(int position,View convertView,ViewGroup parent){ }

  • 如何处理软键盘和隐藏它使用appium Android。 以下是我的设想: 打开flipkart应用 点击搜索图标 键入一些文本[例如:汽车] 从设备键盘点击搜索图标 下面是我实现的代码: 我使用driver.rotate(屏幕定位。LANDSCAPE);"在代码中,但得到错误作为org.openqa.selenium.WebDriverExcture:一个未知的服务器端错误发生在处理命令。(警告

  • 我试图防止在SearchView上调用requestFocus()后键盘出现,但在Android8上没有解决方案。 我试过: /*3/ /*4/ onGlobalLayout()工作,但软键盘显示了近0.5秒后消失。 即使在调用requestFocus()之后,是否可以帮助隐藏软键盘?

  • 我已经搜索了半打其他答案,但没有找到一个有效的答案。我只是想在用户按下回车键时关闭软键盘。(相当于极其简单的iOS“辞职键盘”通话。)在下面的代码中,不会调用onEditorAction方法。我在XML文件中设置了EditText视图,片段中的代码如下: 下面是XML文件中的一个片段,我在其中定义了EditText字段。我需要EditText多行。

  • 我有一个AutoCompleteTextView,它像往常一样在用户键入3个字母后提供建议。一旦我触摸建议列表,我想隐藏软键盘一次。我在下面用表格布局所做的只是在单击除建议列表之外的任何地方时隐藏键盘。 可扩展置标语言 爪哇岛 用于自定义列表的 XML