He creado un proyecto de prueba simple que muestra una ventana emergente que contiene un EditText (en Android 2.2). Cuando toco EditText, se muestra el teclado virtual, como era de esperar. Sin embargo, el teclado suave cubre EditText, y no puedo hacer que la pantalla se mueva para mantener el EditText a la vista de la manera que hubiera pensado. Mi código:El teclado suave cubre un EditText en una ventana emergente
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>
... y mi AndroidManifest.xml Qué contiene la línea android:windowSoftInputMode="stateUnspecified|adjustPan"
en la etiqueta para la única actividad en la aplicación.
¿Alguna idea? Ninguna de las otras publicaciones sobre SO relacionadas con este tema lo ha hecho por mí. ¿Qué es lo que me falta que impide que la vista se desplace de la manera que yo esperaría?
EDIT: intenté agregar una línea en TestAdjustPanActivity como se indica, lo que causó que la pantalla funcionara perfectamente en un dispositivo con Android 3.2 que tengo. Sin embargo, todavía no funciona en mi dispositivo Android 2.2, lo que hace que esto sea aún más confuso.
Meh, no hay suerte, lamentablemente. ¡Gracias! – Lewis