這是我的解決方法..在保存EditText的Activity中,我有一個擴展了EditText
的子類。在這個小類中,我重寫了用於檢查鍵盤是否打開的onMeasure()
方法。
public static class MyEditText extends EditText {
MyActivity context;
public void setContext(MyActivity context) {
this.context = context;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.getSize(heightMeasureSpec);
Activity activity = (Activity)getContext();
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight();
int diff = (screenHeight - statusBarHeight) - height;
// assume all soft keyboards are at least 128 pixels high
if (diff>128)
context.showHandle(false);
else
context.showHandle(true);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
然後,在活動,如果鍵盤打開抽屜手柄被設置爲1 x 1像素透明圖像,如果鍵盤被隱藏在真實手柄被示出:
private void showHandle(boolean show) {
ImageView drawer_handle = (ImageView) findViewById(R.drawable.handle);
if (show)
drawer_handle.setImageResource(R.drawable.handle);
else
drawer_handle.setImageResource(R.drawable.handle_blank);
}
最後,確保您撥打setContext()
在onCreate()
的MyActivity
MyEditText met = (MyEditText) findViewById(R.id.edit_text);
met.setContext(this);
我遇到同樣的問題,並發現作爲第一個結果你的問題。如果您確實獲得了工作解決方案,請隨時在下面發佈。 – keyboardsurfer 2011-09-16 08:51:58