1

在這裏我使用ViewPager的片段,我用自定義視圖尋呼機來控制導航。 這裏是一流的,處理軟鍵盤導航箭頭

public class NonSwipeableViewPager extends ViewPager { 

public NonSwipeableViewPager(Context context) { 
    super(context); 
    setMyScroller(); 
} 

public NonSwipeableViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    setMyScroller(); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    // Never allow swiping to switch between pages 
    return false; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // Never allow swiping to switch between pages 
    return false; 
} 

//down one is added for smooth scrolling 

private void setMyScroller() { 
    try { 
     Class<?> viewpager = ViewPager.class; 
     Field scroller = viewpager.getDeclaredField("mScroller"); 
     scroller.setAccessible(true); 
     scroller.set(this, new MyScroller(getContext())); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public class MyScroller extends Scroller { 
    public MyScroller(Context context) { 
     super(context, new DecelerateInterpolator()); 
    } 

    @Override 
    public void startScroll(int startX, int startY, int dx, int dy, int duration) { 
     super.startScroll(startX, startY, dx, dy, 350 /*1 secs*/); 
    } 
} 

}

有沒有刷卡並點擊活動工作。但什麼是我的問題是

image當我選擇FIRST NAME並單擊箭頭按鈕在我的平板電腦(三星),它定位到中間名然後,後導航到下一個片段即;我的視圖傳呼機上的INTRODUCTION選項卡。 這是我的問題,如何防止這個?

我是煉,我設置的EditText屬性nextFocusForward,並試圖

v.setFocusableInTouchMode(true); 
v.requestFocus(); 
v.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     if (keyCode == KeyEvent.KEYCODE_NAVIGATE_NEXT) { 
      return false; 
      } 
     } 
     return false; 
    } 
}); 

,但沒有好!
如何隱藏該軟鍵?或如何控制行動? 問題是隻有這個鍵盤,(在三星選項卡上)我的手機沒有這樣的按鍵。 如何擺脫這個問題?

回答

0

我知道它太晚了,但它可以幫助別人。

嘗試在你的項目

@Override public boolean dispatchKeyEvent(KeyEvent event) { 

    Log.i("key pressed", String.valueOf(event.getKeyCode())); 
    if(event.getKeyCode()==KeyEvent.KEY_A/*select required keycode*/){ 

     //perform required task 

    } 
    return super.dispatchKeyEvent(event); 
} 

使用dispatchKeyEvent(KeyEvent的事件),它返回您一鍵碼檢查navigation_next按鍵的鍵碼。

希望這會幫助你。