在我的應用程序中,我創建了底部選項卡。片段用於顯示每個選項卡的內容。一切工作正常,如果我點擊標籤。但我想實現「向左/向右滑動」的格式,以便用戶可以輕掃以從一個Tab切換到另一個Tab。
我已經創建了自定義手勢檢測器用於處理所有MotionEvent [主要onFling()]。ListView投擲不起作用
public class OnSwipeTouchListener implements GestureDetector.OnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent motionEvent) {
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return true ;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return true; // No difference if I make it false
}
@Override
public void onLongPress(MotionEvent motionEvent) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float dVelocityX, float dVelocityY) {
boolean bResult = false;
try
{
float dDifferenceY = e2.getY() - e1.getY();
float dDifferenceX = e2.getX() - e1.getX();
if(Math.abs(dDifferenceX) > Math.abs(dDifferenceY))
{
if((Math.abs(dDifferenceX) > SWIPE_THRESHOLD) && (Math.abs(dVelocityX) > SWIPE_VELOCITY_THRESHOLD))
{
if(dDifferenceX > 0)
{
onSwipeLeft();
}
else
{
onSwipeRight();
}
}
bResult = true;
}
}
catch (Exception e)
{
e.printStackTrace();
}
return bResult;
}
public abstract void OnCustomClick();
public void onSwipeRight()
{
// Code for Right Swipe.
}
public void onSwipeLeft()
{
// Code for Left Swipe.
} }
我的ListView的片段。由於我想爲列表項目執行Click事件,因此我的Coustom手勢檢測器被分配給所有列表項目。將我的手勢檢測器分配給列表視圖不會對列表項執行「onItemClick」事件。
我想我的ListView應該滾動以及檢測滑動手勢。我們在WhatsApp應用程序中觀察到同樣的情況,其中ListView平滑滾動以及平滑滑動發生。 (我知道,在我的情況下,標籤是自定義和底部位置。)
問題是,即使我執行向左/向右滑動,listview正在檢測滾動。它會執行一次或兩次刷卡,當我嘗試使用此密碼10次或更多次時。在仿真器上它可以很好地工作,但是在設備上面臨這個問題
任何人都可以告訴我爲什麼onFling()每次執行滑動操作時都不會調用?我肯定錯過了什麼。任何幫助表示讚賞。提前致謝。
Thaks爲您的答覆。在我的情況下,標籤也是自定義的,他們有標籤圖標,而不是標題。我將檢查是否可以自定義「SlidingTabLayout」的佈局。不過,如果你能爲我的場景建議我一些東西,那將非常有幫助。 – KavitaDev
我嘗試過這種方式,並且只用了很少的定製工作。非常感謝。 – KavitaDev