J'ai cherché pendant plusieurs heures pour trouver une solution de travail pour ce problème, et j'ai réussi à en créer un. J'espère que quelqu'un pourra également utiliser cette solution.MonoDroid changer les onglets avec glisser
1
A
Répondre
5
private GestureDetector _gestureDetector;
private GestureListener _gestureListener;
protected override void OnCreate(Bundle bundle)
{
_gestureListener = new GestureListener();
_gestureListener.LeftEvent += GestureLeft;
_gestureListener.RightEvent += GestureRight;
_gestureDetector = new GestureDetector(this, _gestureListener);
}
private void GestureLeft()
{
if (TabHost.CurrentTab - 1 < 0)
{
TabHost.CurrentTab = TabHost.TabWidget.TabCount - 1;
}
else
{
TabHost.CurrentTab--;
}
}
private void GestureRight()
{
if (TabHost.CurrentTab + 1 >= TabHost.TabWidget.TabCount)
{
TabHost.CurrentTab = 0;
}
else
{
TabHost.CurrentTab++;
}
}
public override bool DispatchTouchEvent(MotionEvent ev)
{
_gestureDetector.OnTouchEvent(ev);
return base.DispatchTouchEvent(ev);
}
GestureListener.cs (j'ai trouvé cette solution sur Internet, mais je malheureusement oublié la source, merci pour l'auteur original de toute façon):
using System;
using Android.Views;
namespace Utils
{
public class GestureListener : Java.Lang.Object, GestureDetector.IOnGestureListener
{
public event Action LeftEvent;
public event Action RightEvent;
private static int SWIPE_MAX_OFF_PATH = 250;
private static int SWIPE_MIN_DISTANCE = 120;
private static int SWIPE_THRESHOLD_VELOCITY = 200;
public GestureListener()
{
}
public bool OnDown(MotionEvent e)
{
return true;
}
public bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
try
{
if (Math.Abs(e1.GetY() - e2.GetY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.GetX() - e2.GetX() > SWIPE_MIN_DISTANCE && Math.Abs(velocityX) > SWIPE_THRESHOLD_VELOCITY && LeftEvent != null)
LeftEvent();//Toast.MakeText(view.Context, "Left Swipe", ToastLength.Short).Show();
else if (e2.GetX() - e1.GetX() > SWIPE_MIN_DISTANCE && Math.Abs(velocityX) > SWIPE_THRESHOLD_VELOCITY && RightEvent != null)
RightEvent();// Toast.MakeText(view.Context, "Right Swipe", ToastLength.Short).Show();
}
catch (Exception e)
{
// nothing
}
return false;
}
public void OnLongPress(MotionEvent e)
{
}
public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return true;
}
public void OnShowPress(MotionEvent e)
{
}
public bool OnSingleTapUp(MotionEvent e)
{
return true;
}
}
}
1
Merci, travaux comme prévu. Voici un dérivé ActionBarSherlock:
private void GestureLeft()
{
Xamarin.ActionbarSherlockBinding.App.ActionBar ab = base.SupportActionBar;
if (ab.SelectedTab.Position - 1 < 0)
{
//ab.SelectTab(ab.GetTabAt(ab.SelectedTab.Position - 1));
ab.SelectTab(ab.GetTabAt(ab.TabCount - 1));
}
else
{
//TabHost.CurrentTab--;
ab.SelectTab(ab.GetTabAt(ab.SelectedTab.Position - 1));
}
}
private void GestureRight()
{
Xamarin.ActionbarSherlockBinding.App.ActionBar ab = base.SupportActionBar;
if (ab.SelectedTab.Position+1 >= ab.TabCount) //TabHost.CurrentTab + 1 >= TabHost.TabWidget.TabCount)
{
ab.SelectTab(ab.GetTabAt(0));
//TabHost.CurrentTab = 0;
}
else
{
ab.SelectTab(ab.GetTabAt(ab.SelectedTab.Position + 1));
//TabHost.CurrentTab++;
}
}
Questions connexes
- 1. onglets MonoDroid voir
- 2. Changer les onglets Javascript avec un bouton?
- 3. Glisser les onglets en décalant les fragments
- 4. Monodroid - Faites glisser la vue avec un événement tactile?
- 5. Glisser les onglets dans le fragment
- 6. Onglets jquery avec ajax, comment changer l'url
- 7. Onglets jQuery-UI - Comment changer les effets?
- 8. Changer les onglets Facebook à l'intérieur iframe
- 9. Comment enregistrer les préférences privées avec monodroid?
- 10. Programmation Android: glisser entre les onglets, supprimer à des fins
- 11. Onglets + glisser dans Android pour tous les niveaux API
- 12. Utilisation des onglets dans les onglets avec
- 13. Android glisser, en utilisant ViewPager sans onglets
- 14. L'application se bloque lorsqu'elle est définie Faites glisser les vues avec les onglets
- 15. Utilisation de ActionBarSherlock avec monodroid
- 16. Comment changer le code HTML dans WebView (Monodroid)
- 17. Async WCF appel avec MonoDroid
- 18. Sencha Touch 2 Onglets avec plusieurs onglets
- 19. ZipEntry pour diffuser avec monodroid
- 20. Activer les onglets avec les onglets jquery ui numéro
- 21. Monodroid obfuscate
- 22. Impossible de changer l'arrière-plan des onglets avec ActionBarSherlock
- 23. Comment changer les 'onglets' dans mon application android simplement glisser sur l'écran? Comme l'application Google+ de l'application
- 24. MonoDroid Bluetooth
- 25. Problème avec les onglets JQuery
- 26. Problème avec les onglets TabConatiner
- 27. Activer les onglets avec jQuery
- 28. Animation de menu coulissant Monodroid
- 29. Changer la page avec l'événement de glisser de la souris
- 30. UITabBarController avec vue plus que les onglets