包装在RelativeLayout中的WebView(包含vimeo或youtube视频)以及一些TextView将以编程方式添加到 postViewContainer 。有时候,它只是一些TextViews和ImageViews,但在大多数情况下,它具有WebView。
videoFullScreenContainer 在视频放大到全屏模式时使用
eplComments 包含评论列表。每个评论都有一个答复列表。
这里的问题是 postViewContainer 不是可滚动的一部分。甚至 eplComments 也无法正常运行。向上滚动时,它会触发拉动刷新,直到完全向上滚动。
如何使 postViewContainer 成为可滚动的一部分,并使用SwipeRefreshLayout解决滚动冲突?
postViewContainer 不能是 eplComments 的项目,因为如果存在,则只要更新 eplComments 中的项目,网络视图中的视频就会重新加载
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:theme="@style/AppTheme.AppBarOverlay">
...
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/swipeRefreshLayout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:id="@+id/postViewContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
<ExpandableListView
android:id="@+id/eplComments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:dividerHeight="0dp"
android:childDivider="@null"
android:divider="@null"
android:groupIndicator="@null"
/>
</LinearLayout>
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/videoFullScreenContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</RelativeLayout>
已更新: 我还尝试过将SwipeRefreshLayout的内容包装在NestedScrollView中,如下所示。这里的问题是它仅加载ExpandableListView中的第一项。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:theme="@style/AppTheme.AppBarOverlay">
...
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/swipeRefreshLayout">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:orientation="vertical">
<FrameLayout
android:id="@+id/postViewContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
<ExpandableListView
android:id="@+id/eplComments"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="0dp"
android:childDivider="@null"
android:divider="@null"
android:groupIndicator="@null"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/videoFullScreenContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</RelativeLayout>
答案 0 :(得分:0)
删除postViewContainer
及其容器(LinearLayout)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:theme="@style/AppTheme.AppBarOverlay">
...
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/swipeRefreshLayout">
<ExpandableListView
android:id="@+id/eplComments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:dividerHeight="0dp"
android:childDivider="@null"
android:divider="@null"
android:groupIndicator="@null"
/>
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/videoFullScreenContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</RelativeLayout>
将WebView(以及您要以编程方式添加的所有其他视图)作为标头添加到ExpandableListView
mExpandableListView.addHeaderView(view);