Comment masquer TextView et n'afficher que lors d'un défilement
J'ai un ScrollView et GridView en elle, je veux mettre un TextView sur le dessus de la GridView, mais il ne doit pas être vu jusqu'à ce que l'utilisateur fait défiler pour elle. J'ai pensé à des marges négatives, mais je ne pouvais pas trouver une solution comment utiliser de défilement pour obtenir cette vue lorsque sur la marge négative.
Donc fondamentalement :
Le seul vu chose doit être gridView, mais lorsque l'utilisateur est sur le dessus de la gridView et tire vers le haut, il faut voir un TextView.
edit:
le point entier de ce que je veux faite pull-to-refresh de cette. Je ne veux pas utiliser populaire sur internet, bibliothèque, car il ne fonctionne pas comme je veux.
EDIT 2:
J'ai eu la réponse, mais il n'est pas entièrement ce que je cherche à atteindre.
Je veux de la douceur, de montrer caché TextView (tout comme dans le pull-to-refresh solutions) et setVisibility rend rapide et sans smoothnes.
Voici mon code :
XML :
<com.tas.android.quick.ui.controls.LockableScrollView
android:id="@+id/scrollView"
android:fillViewport="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pullText"
android:text="some text" />
<com.tas.android.quick.ui.controls.ExpandableGridView
android:id="@+id/gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:clipToPadding="false"
android:drawSelectorOnTop="true"
android:fadingEdge="none"
android:gravity="top"
android:horizontalSpacing="@dimen/image_grid_hspacing"
android:listSelector="@drawable/selector_shadow"
android:numColumns="@integer/grid_num_cols"
android:paddingBottom="50dp"
android:scrollbarAlwaysDrawVerticalTrack="false"
android:scrollbars="none"
android:scrollingCache="true"
android:smoothScrollbar="false"
android:stretchMode="columnWidth"
android:verticalSpacing="@dimen/image_grid_vspacing"
android:visibility="visible" />
</LinearLayout>
</com.tas.android.quick.ui.controls.LockableScrollView>
et code:
textview = (TextView) findViewById(R.id.pullText);
textview.setVisibility(View.VISIBLE);
scrollView = (LockableScrollView) findViewById(R.id.scrollView);
scrollView.setScrollingEnabled(false);
...
gridView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch(scrollState) {
case 2: //SCROLL_STATE_FLING
//hide button here
textview.setVisibility(View.VISIBLE);
break;
case 1: //SCROLL_STATE_TOUCH_SCROLL
//hide button here
textview.setVisibility(View.GONE);
break;
case 0: //SCROLL_STATE_IDLE
//show button here
textview.setVisibility(View.GONE);
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
}
}
});
- où est votre cas par défaut? de l'interrupteur par défaut: //afficher le bouton de btn.setVisibility(View.VISIBLE); break;
- voir mon switch cas. vous avez manqué le défaut de commutateur
- J'ai oublié à ce sujet, maintenant c'est ajouté
Vous devez vous connecter pour publier un commentaire.
vous pouvez le faire en utilisant setOnScrollListener pour GridView comme:
EDIT 1
pour la douceur essayer celui-ci (pas testé)
Lieu à la fois votre GridView et votre TextView à l'intérieur d'un LinearLayout (ou RelativeLayout)
Alors la ScrollView seulement contenir votre Linéaire/Relative de la mise en page.
Pour masquer textview, utilisez
findViewById(R.id.textviewId).setVisibility(View.GONE);
(utilisation de la Vue.VISIBLE pour définir à nouveau visible).Il y a une option dans le fichier xml pour la visibilité.
Cliquez sur le TextView et puis changement à l'Invisible ou Disparu.