Comment utiliser le SwipeRefreshLayout?
Fond
Google a récemment publié une mise à jour de sa bibliothèque de prise en charge, qui a maintenant un nouveau "SwipeRefreshLayout".
La vue permet d'envelopper un autre point de vue, tout en soutenant la glisser vers le bas pour effectuer une opération d'actualisation.
capture d'écran:
Le problème
Google n'a pas fourni un échantillon (au moins pas un de ceux que je peux trouver, encore), donc j'ai essayé de l'utiliser moi-même.
Au début, j'ai eu un plantage (NPE) à chaque fois que je l'ai lue, mais ensuite j'ai trouvé que c'est parce que je n'ai pas de fournir un "OnRefreshListener".
Mais je ne comprends toujours pas comment l'utiliser, encore moins de le personnaliser
Voici le XML du fichier de mise en page:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.swiperefreshlayouttest.MainActivity"
tools:ignore="MergeRootFrame" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TTT"
android:textSize="40sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TTT"
android:textSize="40sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TTT"
android:textSize="40sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TTT"
android:textSize="40sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TTT"
android:textSize="40sp" />
</LinearLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
Code, mais il ne veut pas faire quelque chose de spécial à tous:
public class MainActivity extends ActionBarActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SwipeRefreshLayout swipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.container);
swipeRefreshLayout.setOnRefreshListener(new OnRefreshListener()
{
@Override
public void onRefresh()
{
//do nothing
}
});
}
}
La question
Quelle est la bonne façon d'utiliser ce point de vue?
Comment puis-je le personnaliser? Actuellement c'est juste une ligne noire...
Pouvez-vous montrer comment vous avez mis en œuvre dans le code java?
Cochez cette tutecentral.com/android-pull-to-refresh
Je n'ai pas. Tout ce que je fait, c'est l'ajout d'un écouteur qui ne fait rien. Le code lui-même est dans la bibliothèque de prise en charge. donc, vous dites que ce sont les seules fonctions qui sont disponibles?
ce n'est pas le soutien de la bibliothèque de la classe.
OriginalL'auteur android developer | 2014-04-11
Vous devez vous connecter pour publier un commentaire.
Sais pas ce que
ActionBarActivity
classe que vous soyez à l'extension de l'est, mais je l'ai eu il fonctionne très bien à l'aide d'un FragmentActivityMérite d'être souligné-je copier collé de votre mise en page xml exactement comme il est
En termes de personnalisation, il n'y a vraiment pas beaucoup que vous pouvez faire d'autre que de changer la couleur de la barre de couleur en appelant setColorScheme(int colorResId, int colorResId, int colorResId, int colorResId);
par exemple
mSwipeRefreshLayout.setColorScheme(R.color.blue, R.color.purple, R.color.green, R.color.orange);
C'est un peu décevante en plus vraiment. La sensibilité sur l'actualisation est assez élevé et il n'y a aucun paramètre à modifierModifier
J'ai écrit cette quand cette classe (et la
ActionBarActivity
classe) avait simplement été ajoutés à la sdk. En tant que tel, certaines choses ont changé depuis le moment où j'ai écrit cette réponse. En outre, le type d'Activité que vous utilisez ne doit pas affecter cette solution.setColorScheme
est maintenant obsolète,setColorSchemeResources(int... colorResIds)
devrait être utilisé à la place. (vous pouvez mettre autant de couleur id de là comme vous voulez).setDistanceToTriggerSync(int distance)
peut également être utilisé pour définir la façon de loin les besoins de l'utilisateur de glisser dans le but de provoquer un rafraîchissement.Je vous recommandons de vérifier la la documentation officielle pour voir ce que la classe a à offrir.
Il est open source. Vous pouvez afficher le code source en accédant au répertoire <YOUR_ADT_BUNDLE_LOCATION>\sdk\extras\android\support\v4\src\java\android\support\v4\widget
Oh cool. je vous remercie.
vous avez utilisé le "violet" deux " fois "setColorScheme"... 🙂
Veuillez consulter journaldev.com/10708/...
OriginalL'auteur
MainActivity.java
activity_main.xml
colors.xml
Utilisation setColorSchemeResources Vérifier ce lien developer.android.com/reference/android/support/v4/widget/..., int, int, int)
ok merci à vous pour cette. pourquoi at-il obsolète?
Pourquoi ne android studio dit.. je ne peux pas appeler à partir d'un contexte statique non méthode statique, mSwipeRefreshLayout.setOnRefreshListener(ce) ?
OriginalL'auteur
veuillez voir ci-après pour un exemple: http://developer.android.com/samples/SwipeRefreshLayoutBasic/index.html
OriginalL'auteur
Vous pouvez en suivant simplement ci-dessous la méthode (je suis en utilisant swipelayout sur la liste déroulante )
Test.xml
ListHeader.xml
ChildItem.xml
les couleurs utilisées
Mainactivity.java
Vous pouvez définir
swipeView.setRefreshing(false);
de faux ou vrai selon votre conditioncette swipeing mechanisam va travailler dans android de tous les API de niveau
OriginalL'auteur
activity_main.xml
MainActivity.java
OriginalL'auteur