首次点击expandablelistview中的edittext,整个布局滚动,用户可以看到edittext。然后单击软键盘完成折叠软键盘并单击此edittext第二次,软键盘显示,但整个布局不滚动,用户无法看到edittext。我也在listview中找到了这个。我搜索了很长时间,有人说它是一个anroid bug? 有替代品吗?
答案 0 :(得分:0)
花了很多天,我找到了解决方案。这是一个黑客。
通过可见的布局更改检测软键盘显示。
user_name
当软键盘显示时,在listview项目或expandablelistview子项目中选择textview。然后为任何事物设置文本,整个视图正常滚动!像这样的代码:
public final void setKeyboardListener(final OnKeyboardVisibilityListener listener) {
final View activityRootView = getWindow().getDecorView()
.findViewById(android.R.id.content);
activityRootView.getViewTreeObserver()
.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
private final Rect r = new Rect();
private boolean wasOpened;
@Override
public void onGlobalLayout() {
activityRootView.getWindowVisibleDisplayFrame(r);
int heightDiff = activityRootView.getRootView().getHeight()
- (r.bottom - r.top);
boolean isOpen = heightDiff > 100;
if (isOpen == wasOpened) {
return;
}
wasOpened = isOpen;
listener.onVisibilityChanged(isOpen);
}
});
}
public interface OnKeyboardVisibilityListener {
void onVisibilityChanged(boolean visible);
}
此textview显示为用户提供了正确的用途。如果它是一个expandablelistview和childitem中的edittext,则textview更新必须在子项目中。
答案 1 :(得分:0)
我也遇到了同样的问题,但在谷歌搜索了一段时间之后,我最终解决了这个问题。
1)在清单文件的活动中添加android:windowSoftInputMode =“adjustPan”标签
<activity
android:name=".MainActivity"
android:configChanges="locale|keyboardHidden|orientation|screenSize|layoutDirection|screenLayout"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize|adjustPan"></activity>
2)将android:descendantFocusability =“beforeDescendants”属性添加到您的可扩展列表视图中,如下所示。
<ExpandableListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/textDate"
android:layout_below="@+id/relativeLayout2"
android:descendantFocusability="beforeDescendants"
android:layout_margin="@dimen/margin_meium"
android:groupIndicator="@android:color/transparent" />