Android SwipeRefreshLayout, wie canChildScrollUp implementiert wird, wenn das untergeordnete Element kein ListView oder ScrollView ist
Hi, ich habe ein SwipeRefreshLayout, das ein relatives Layout enthält, das eine Bildlaufansicht und eine andere Ansicht enthält, wenn ich in der Liste nach unten scrolle, wird manchmal kein Bildlauf nach oben ausgeführt, stattdessen wird die onRefresh-Funktion ausgeführt. Wie verhindere ich, dass dies ausgeführt wird, es sei denn, die Ansicht befindet sich oben? Ich hatte über canChildScrollUp gelesen, aber keinen Weg gefunden, es richtig zu implementieren.
heres mein Layout
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/profile"
android:background="@drawable/homepage_image_1">
<com.alldaypa.alldaypa.customviews.CircularImageView
android:layout_width="75dp"
android:layout_height="75dp"
app:border_color="#FFFFFF"
app:border_width="8dp"
app:shadow="false"
android:id="@+id/profile_image"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="70dp"
android:layout_marginTop="20dp"
android:src="@drawable/homepage_noimage_male"
android:clickable="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/profile_image"
android:layout_alignRight="@+id/profile_image"
android:src="@drawable/homepage_profile_add"
android:layout_marginRight="3dp"
android:layout_marginBottom="3dp"
/>
<TextView android:id="@+id/profile_name"
android:text="Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_alignTop="@+id/profile_image"
android:layout_toRightOf="@+id/profile_image"
android:layout_marginTop="20dp"
android:textColor="@color/darkgrey"
android:layout_marginLeft="10dp"/>
<TextView android:id="@+id/company"
android:text="Company"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_below="@+id/profile_name"
android:layout_alignLeft="@+id/profile_name"
android:textColor="@color/darkgrey"
android:layout_marginTop="-2dp"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/availability"
android:background="@color/white"
android:padding="20dp"
android:layout_below="@+id/profile">
<TextView android:id="@+id/profile_status_title"
android:text="Your current availability status:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textColor="@color/darkgrey"/>
<TextView android:id="@+id/profile_status"
android:text="Available"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32sp"
android:layout_below="@+id/profile_status_title"
android:layout_centerHorizontal="true"
android:textColor="@color/green"
android:layout_marginTop="-2dp"/>
<TextView android:id="@+id/profile_status_reason"
android:text="On: 01924 501370"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:layout_below="@+id/profile_status"
android:layout_centerHorizontal="true"
android:textColor="@color/pink"/>
</RelativeLayout>
<TextView
android:id="@+id/messages"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/availability"
android:ellipsize="end"
android:lines="1"
android:background="@color/pink"
android:textColor="@color/white"
android:textSize="14sp"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:gravity="left"
android:text="Messages" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/messages"
android:background="@color/midgrey">
<com.alldaypa.alldaypa.customviews.SwipeListView
xmlns:swipe="http://schemas.android.com/apk/res-auto"
android:id="@+id/list"
android:listSelector="#00000000"
android:layout_width="fill_parent"
android:layout_height="400dp"
swipe:swipeFrontView="@+id/front"
swipe:swipeBackView="@+id/back"
swipe:swipeActionLeft="reveal"
swipe:swipeMode="left"
swipe:swipeCloseAllItemsWhenMoveList="true"
swipe:swipeOpenOnLongPress="false"
swipe:swipeAnimationTime="0"
swipe:swipeOffsetLeft="200dp"
swipe:swipeOffsetRight="0dp"
android:focusable="false"
/>
<ImageView android:layout_height="1dp"
android:layout_width="match_parent"
android:background="@color/searchbg"
android:layout_below="@+id/list"
android:layout_alignLeft="@+id/list"
android:id="@+id/line"
/>
<Button
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/listitem"
android:textColor="@color/darkgrey"
android:textSize="18sp"
android:text="View all messages"
android:layout_below="@+id/line"
android:gravity="center"
android:layout_centerVertical="true"
android:id="@+id/viewall"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
</RelativeLayout>
</ScrollView>
<include layout="@layout/elv_undo_popup" android:id="@+id/undo" android:visibility="gone"/>
</RelativeLayout>
</android.support.v4.widget.SwipeRefreshLayout>
nd hier, wo ich meine Klasse implementiert ha
swipeLayout = (SwipeRefreshLayout)v.findViewById(R.id.swipe_container);
swipeLayout.setColorSchemeColors(Color.parseColor("#ed037c"), Color.parseColor("#c40053"),Color.parseColor("#ffffff"), Color.parseColor("#51af50"));
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override public void onRefresh() {
swipeLayout.setRefreshing(true);
Log.d("Swipe", "Refreshing Number");
( new Handler()).postDelayed(new Runnable() {
@Override public void run() {
updateLocalData();
}
}, 3000);
}
});