当第二次单击同一个edittext时,adjustpan在expandablelistview中不起作用

时间:2016-03-07 02:57:55

标签: android

首次点击expandablelistview中的edittext,整个布局滚动,用户可以看到edittext。然后单击软键盘完成折叠软键盘并单击此edittext第二次,软键盘显示,但整个布局不滚动,用户无法看到edittext。我也在listview中找到了这个。我搜索了很长时间,有人说它是一个anroid bug?  有替代品吗?

2 个答案:

答案 0 :(得分:0)

花了很多天,我找到了解决方案。这是一个黑客。

  1. 将edittext包装在linearlayout中。
  2. 通过可见的布局更改检测软键盘显示。

    user_name
  3. 当软键盘显示时,在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);
        }
    
  4. 此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" />