tablayout + coordinatorlayout内的listview内部片段不会滚动

时间:2017-01-03 16:07:31

标签: listview android-fragments android-viewpager android-coordinatorlayout

下面的ListView不会滚动。它使用第一个布局中的ViewPager组件。 ViewPager的片段是动态引入的。 ListView的onScroll事件可以加载100个项目,但滚动不起作用。 任何人都可以看到sometj

我有以下xml布局:

    <android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="@color/background_primary"
    >
    <android.support.design.widget.AppBarLayout
        android:id="@+id/abl_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/text_header_field"
        app:theme="@style/MyMaterialTheme"
        >
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/text_header_field"
            app:layout_scrollFlags="scroll|enterAlways"
            android:padding="0dp"
            app:contentInsetLeft="0dp"
            app:contentInsetRight="0dp"
            app:contentInsetStart="0dp"
            app:popupTheme="@style/CDTheme.NoActionBar.PopupOverlay"
            >
            <com.cashdash.views.components.TypefaceTextView
                android:id="@+id/toolbar_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:customTypeface="fonts/Montserrat-Light.otf"
                android:layout_gravity="center"
                android:textSize="16sp"
                android:text="@string/title_activity_transaction"
                android:gravity="center"
                android:textColor="@color/text_title"
                android:textAllCaps="true"
                android:background="@color/text_header_field"
                />
        </android.support.v7.widget.Toolbar>
        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabIndicatorColor="@color/background_primary_to"
            app:tabBackground="@color/text_header_field"
            app:tabMode="fixed"
            app:tabGravity="fill"
            app:tabSelectedTextColor="@color/field_value_dark"
            app:tabTextColor="@color/tab_inactive"
            />
    </android.support.design.widget.AppBarLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</android.support.design.widget.CoordinatorLayout>

这是碎片:

    <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".TransactionHistoryFragment"
     android:background="@color/background_primary">
     <ListView
            android:id="@+id/lv_transaction"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
        />
   </FrameLayout>

更新

我尝试了几件事,这些'合并'解决了这个问题。 通常,这是嵌套滚动的问题,但解决方案是关于:

  • 从父级别拦截Touch事件并实现滚动
  • 使用xml属性android:nestedScrollingEnabled =“true”for API 21 +
  • 使用ViewPager上的页面转换作为可选解决方案

每个人都是解决方案中不可或缺的一部分。

1 个答案:

答案 0 :(得分:0)

解决办法是:

  • 从父层次结构中截取 Touch 事件并实现滚动
  • 为 API 21+ 使用 xml 属性 android:nestedScrollingEnabled="true"
  • 使用 ViewPager 上的页面转换作为可选解决方案

目前没有针对 API 20- 的解决方案,只能以不同的方式构建整个视图。