我的 Activity 基本上是一个很长的输入字段。 在每一行上,我想在每个 EditText 下方显示一个 TextView 作为提示文本,并且我希望 TextView 在用户输入数据时始终保持可见。不幸的是,软键盘遮盖了提示文本并始终将其自身定位在 EditText 的正下方。有没有什么技术可以让 EditText 下面的 TextView 在出现软键盘并调整内容(通过 windowSoftInputMode=adjustResize|adjustPan)时也可见,而无需用户滚动?
最佳答案
Vishavjeet 让我走上了正确的轨道,建议我向下滚动以显示可能被键盘重叠的 View 。下面是一个类似于我用来解决问题的功能。当 TextView 上方的 EditText 获得焦点时可以调用它:
// View targetView; // View that may be hidden by keyboard
// ScrollView scrollContainerView; // Scrollview containing hiddenView
//
void assureViewVisible (View targetView, ScrollView, scrollContainerView) {
Window rootWindow = activity.getWindow();
Rect rMyView = new Rect();
View rootview = rootWindow.getDecorView();
rootview.getWindowVisibleDisplayFrame(rMyView); // Area not taken up by keyboard
int subTextPos[] = new int[2];
targetView.getLocationInWindow(subTextPos); // Get position of targetView
int subTextHt = targetView.getHeight(); // Get bottom of target view
if ((subTextPos[1]+subTextHt) > rMyView.bottom) { // Is targetView at all obscured?
int scrollBy = (subTextPos[1]+subTextHt) - rMyView.bottom + 10; // add a small bottom margin
mMeasurementViewScrollView.smoothScrollBy(0, scrollBy); // Scroll to subtext
}
}
关于android - 键盘放置遮挡了下方的 View EditText 希望保持可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505374/