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按键的键码。

希望这会帮助你。