我正在尝试将我的 EditTest 设置在 RelativeLayout 中的特定位置。所以我得到了 Ediitext 的位置并根据我想要的设置。它对我很好。但是当 Android 2.2 和 android 2.3 设备没有找到getY()
方法时就会出现问题。因为我想获得 Ediitext 的位置。
现在我需要为此找到另一种方法,因为它在 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 位置的替代方法。
给我任何参考或提示。