RelativeLayout の特定の位置に EditTest を設定しようとしています。だから私は Edititext の位置を取得し、私が望むものに応じて設定しています。それは私とうまくいっています。getY()
ただし、Android 2.2 および android 2.3 デバイスでメソッドが見つからない場合に問題が発生します。Edititextの位置を取得しようとしているためです。
2.2 と 2.3 では機能しないため、別の方法を見つける必要があります。
参照用の私のコードは次のとおりです。
ViewTreeObserver autoCompleteObserver = myAutoComplete.getViewTreeObserver();
autoCompleteObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
relativeLayoutHeight = ((int) myAutoComplete.getY()-12);
}
});
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
Log.i("TEST", "GLOBAL LAYOUT "+activityRootView.getHeight());
Log.i("TEST", "GLOBAL LAYOUT rel"+relativeLayoutHeight);
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
Log.i("TEsT","Keyboard visible");
myRelativLayout.scrollTo(0, relativeLayoutHeight);
}
else
{
Log.i("TEsT","Keyboard not visible");
myRelativLayout.scrollTo(0, 0);
myAutoComplete.setDropDownHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
});
}
このコードは 4.1で正常に動作しgetY()
ますが、EditText の位置を返す代替メソッドを見つける必要があります。
参考やヒントを教えてください。