【发布时间】:2012-06-03 06:48:25
【问题描述】:
我整理了一个简单的测试项目,它显示了一个包含 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 设备上平移,这让这更加令人困惑。
【问题讨论】:
标签: java android xml android-edittext android-softkeyboard