2015-08-22 10 views
6

Ich habe versucht, Pull-to-Refresh in meiner App zu implementieren.Kann ich Pull-to-Refresh ohne ScrollView/ListView verwenden?

Ich wickelte meinen XML-Code mit android.support.v4.widget.SwipeRefreshLayout und es funktioniert, aber die GUI sieht nicht gut aus.

Wenn ich herunterziehe, sollte ich das reguläre animierte Kreissymbol mit meinen definierten Farben sehen, richtig ?, aber ich sehe es als einen leeren Kreis und nicht als einen drehenden mit Farben, wie es sollte.

Außerdem kann ich nicht damit "spielen" und halte es sogar noch eine Weile, nachdem ich es gezogen habe, es geht für eine Sekunde runter (mach was es tut) und verschwindet dann.

Ich denke es ist, weil ich nicht ListView sondern LinearLayout stattdessen verwende.

Was denkst du?

Code:

XML:

<android.support.v4.widget.SwipeRefreshLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/swipe"> 

    <LinearLayout 
     android:layout_height="match_parent" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:background="#7B68EE" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     tools:context=".HomeActivity"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/loin" 
     android:orientation="horizontal"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="@string/welcome" 
      android:textColor="#B0C4DE" 
      android:id="@+id/welcomeBackID" 
      android:layout_alignParentTop="true" 
      android:layout_alignRight="@+id/webViewCurren" 
      android:layout_alignEnd="@+id/webViewCurren" /> 

     .... 

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

Java:

public class HomeActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener { 

    SwipeRefreshLayout mSwipeRefreshLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

     mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe); 
     mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_green_light, 
       android.R.color.holo_blue_bright, 
       android.R.color.holo_orange_light, 
       android.R.color.holo_red_light); 
     mSwipeRefreshLayout.setOnRefreshListener(this); 

    @Override 
    public void onRefresh() { 
     Toast.makeText(this, "Refresh", Toast.LENGTH_SHORT).show(); 
     sharedPrefEditor.putString("coordinateX", "34.7"); 
     sharedPrefEditor.putString("coordinateY", "32.5"); 
     sharedPrefEditor.putString("saved", "false"); 
     sharedPrefEditor.commit(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       mSwipeRefreshLayout.setRefreshing(false); 
      } 
     }, 3000); 
    } 
} 

Antwort

0

Versuchen Sie, die SwipeRefreshLayout Farbschema ändern.

swipeRefreshLayout.setColorSchemeColors(
    Color.RED, Color.GREEN, Color.BLUE, Color.CYAN); 

Außerdem wird die SwipeRefreshLayout sichtbar, bis onRefresh() seine Ausführung abgeschlossen ist.

Verwandte Themen