Die Soft-Tastatur deckt einen EditText in einem PopupWindow ab
Ich habe ein einfaches Testprojekt zusammengestellt, das ein PopupWindow mit einem EditText (unter Android 2.2) anzeigt. Wenn ich auf den EditText tippe, wird die Soft-Tastatur wie erwartet angezeigt. Die Softtastatur deckt jedoch den EditText ab, und ich kann den Bildschirm nicht zum Schwenken bringen, um den EditText so im Blick zu behalten, wie ich es mir vorgestellt hätte. Mein Code:
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>
... und meine AndroidManifest.xml enthält die Zeileandroid:windowSoftInputMode="stateUnspecified|adjustPan"
im Tag für die einzige Aktivität in der App.
Irgendwelche Ideen? Keiner der anderen SO-Beiträge zu diesem Thema hat es für mich getan. Was fehle ich, damit der Blick nicht so schwenkt, wie ich es erwarten würde?
BEARBEITEN: Ich habe versucht, eine Zeile in TestAdjustPanActivity wie angegeben hinzuzufügen, wodurch der Bildschirm auf einem Android 3.2-Gerät, das ich habe, perfekt geschwenkt wurde. Auf meinem Android 2.2-Gerät wird das Fenster jedoch immer noch nicht verschoben, was das Ganze noch verwirrender macht.