2

我正在尝试SwipeRefreshLayout在我的一个片段中添加布局。当列表包含一些元素时,一切都按预期工作。

问题是当我的列表为空时。ViewStub当列表不包含任何项目时,我会出现,并且那时我的OnRefreshListener永远不会被触发。

这是我的 ListFragment xml:

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swipeRenewals"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@android:id/list"
            android:fadingEdge="vertical"
            android:layout_gravity="center"
            android:cacheColorHint="@android:color/transparent"/>
        <ViewStub
            android:id="@android:id/empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout="@layout/empty_renewal"/>
    </FrameLayout>

</android.support.v4.widget.SwipeRefreshLayout>

我在 ViewStub 中加载的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"/>
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_warning"
            android:adjustViewBounds="true"
            android:layout_weight="1" />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"/>
    </LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/no_renewal"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/refresh_for_new"/>

</LinearLayout>

那么有没有办法在列表为空时让滑动手势触发刷新?

4

1 回答 1

3

显然把问题写下来有帮助。

我通过将 ViewStub 布局封装在 ScrollView 中解决了我的问题。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2"/>
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_warning"
                android:adjustViewBounds="true"
                android:layout_weight="1" />
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2"/>
        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/no_renewal"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/refresh_for_new"/>

    </LinearLayout>
</ScrollView>
于 2014-05-16T21:55:54.043 回答