Je souhaite masquer/afficher la barre d'actions de compatibilité lorsque l'utilisateur fait défiler une liste vers le haut ou le bas. Lorsque la barre d'action disparaît, la liste occupe également l'espace de la barre d'action.
J'ai suivi une approche mais elle génère un scintillement moche. Quelqu'un at-il une solution adéquate à ce problème? Le comportement souhaité ressemble au mécanisme d'affichage/masquage de l'application Google+ (le pied de page ne m'intéresse pas).
Ce que j'ai essayé est présenté ci-dessous:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (!tabletSize) {
final ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
lvNews.setOnScrollListener(new AbsListView.OnScrollListener() {
private int mLastFirstVisibleItem;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (mLastFirstVisibleItem < firstVisibleItem) {
if (actionBar.isShowing()) {
actionBar.hide();
}
}
if (mLastFirstVisibleItem > firstVisibleItem) {
if (!actionBar.isShowing()) {
actionBar.show();
}
}
mLastFirstVisibleItem = firstVisibleItem;
}
});
}
Pour éviter le scintillement causé par le réajustement de la présentation, vous pouvez utiliser la propriété de superposition dans la barre d'actions.
https://developer.Android.com/training/basics/actionbar/overlaying.html
Mais cette solution fait en sorte que la barre d’action recouvre votre liste d’affichage, vous devez donc ajouter un en-tête de cette taille:
"?android:attr/actionBarSize"
par exemple :
mVideosListView = (ListView) getActivity().findViewById(Android.R.id.list);
mVideosListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.listview_header,null));
Faites attention avec d'autres éléments comme le tiroir de navigation, qui est également affecté par cela.
Vous devez faire en sorte que la barre d’action recouvre la vue en liste. Ce faisant, vous avez la responsabilité de gérer la dissimulation et de montrer la barre d’action lorsque cela est nécessaire.
Vous trouverez un exemple à la page suivante: http://www.techrepublic.com/article/pro-tip-maximize-Android-screen-real-estate-by-showing-and-hiding-the- barre d'action/
vous pouvez essayer cette bibliothèque. J'espère que ça aide https://github.com/ksoichiro/Android-ObservableScrollView
Voir ma réponse sur ce lien: Comment masquer et afficher le ActionBar Android comme dans l'application Google Inbox? J'utilise RecyclerView mais l'idée est la même