Ho creato un semplice progetto di test che visualizza una finestra popup contenente un oggetto EditText (su Android 2.2). Quando tocco EditText, viene mostrata la tastiera virtuale, come mi aspetterei. Tuttavia, la tastiera virtuale copre EditText, e non riesco a far sì che lo schermo effettui il pan per mantenere in vista il testo di EditText nel modo in cui avrei pensato che fosse necessario. Il mio codice:La tastiera virtuale copre un EditText in una finestra popup
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>
... e la mia AndroidManifest.xml contiene la riga android:windowSoftInputMode="stateUnspecified|adjustPan"
nel tag per la sola e unica attività nell'app.
Qualche idea? Nessuno degli altri post su SO relativi a questo problema lo ha fatto per me. Che cosa mi manca è mantenere la visuale dal panning nel modo in cui mi aspetterei che ciò accada?
MODIFICA: Ho provato ad aggiungere una riga in TestAdjustPanActivity come indicato, che ha causato lo schermo perfettamente su un dispositivo Android 3.2 che ho. Tuttavia, non funziona ancora sul mio dispositivo Android 2.2, il che lo rende ancora più confuso.
Meh, sfortuna purtroppo. Grazie comunque! – Lewis