软键盘覆盖一个EditText在PopupWindow(Soft keyboard covers a

2019-07-29 16:53发布

我扔在一起,显示包含一个EditText(在Android 2.2)一个PopupWindow一个简单的测试项目。 当我挖掘的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设备,这使得这个更加混乱上。

Answer 1:

对于任何人在未来已在此磕磕绊绊,最后我只使用一个对话框,而不是PopupWindow,和平移保持的EditText鉴于对2.2工作正常的对话框。



Answer 2:

还有更简单的方法。 只是提供了积极的键盘替换布局。

  1. 项目左键单击选择:“Android的工具/新的资源文件...”。
  2. 之所以选择布局,给文件命名为“主”(不用担心冲突)。
  3. 点击下一步”。 然后在左边列表中选择“键盘”,并将其移动到右(点击“ - >”)。
  4. 在右侧选择键盘状态。
  5. 点击完成。
  6. 现在复制你的main.xml位于“RES /布局”,以在res /布局keyssoft新文件”的内容。
  7. 以这样的方式正确的新的布局,键盘是不是这样的。 记住保持相同的“ID” S在这两个布局各个组件(这就是为什么复制需要粘贴)。
  8. 享受它是如何工作的

阅读关于配置更改 ,以了解它是如何工作的。 请注意,每个配置变化(取向变化,语言的变化,...)将导致活动的娱乐(中的onCreate的情况下,这样的说法是不为空),这样你就可以针对不同情况提供不同的布局。



Answer 3:

我怀疑这个问题是因为使用的ScrollViewXML

已经有类似这样的一个问题,您可以检查所有不同的答案出现 ,并可能为你工作。



Answer 4:

改变这种

android:windowSoftInputMode="stateUnspecified|adjustPan"

android:windowSoftInputMode="adjustPan"

只有在你的清单文件



Answer 5:

你应该改变

android:windowSoftInputMode="stateUnspecified|adjustPan 

android:windowSoftInputMode="stateHidden|adjustPan"


Answer 6:

花了几个小时搞清楚,我结束了使用滚动视图

显然是没有办法当您使用弹出窗口和软键盘输入您的隐藏为了克服这个问题。 只是去滚动型。



文章来源: Soft keyboard covers an EditText in a PopupWindow