我的活动基本上是一个长形式的输入字段。
在每一行上,我想在每个 EditText 下方显示一个 TextView 作为提示文本,并且我希望 TextView 在用户输入数据时始终保持可见。不幸的是,软键盘掩盖了提示文本,并且总是将其自身定位在 EditText 的正下方。是否有任何技术可以让 EditText 下面的 TextView 在出现软键盘并调整内容(通过 windowSoftInputMode=adjustResize|adjustPan)时也可见,而无需用户滚动?
Vishavjeet 建议我向下滚动以显示可能与键盘重叠的视图,这让我走上了正确的道路。下面是一个与我用来解决问题的函数类似的函数。当 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
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)