【问题标题】:Handling Soft Keyboard Navigation Arrows处理软键盘导航箭头
【发布时间】:2017-04-22 06:43:04
【问题描述】:

这里我使用 ViewPager for Fragments,我使用自定义视图寻呼机来控制导航。 这是课程,

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*/);
    }
}

}

没有滑动和点击事件起作用。但我的问题是

当我选择 FIRST NAME 并单击平板电脑(三星)上的箭头按钮时,它会导航到 MIDDLE NAME,然后导航到 LAST NAME,在 LAST NAME 之后 导航到下一个片段,即;我的视图寻呼机上的简介选项卡。 这是我的问题,如何预防?

我尝试的是,我设置了 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; 
    } 
}); 

但不好!
如何隐藏该软键?或者如何控制动作? 问题仅在于这个键盘,(在三星标签上)我的手机上没有这样的键。 如何解决这个问题?

【问题讨论】:

    标签: android android-fragments android-viewpager android-keypad


    【解决方案1】:

    我知道为时已晚,但它可以帮助某人。

    尝试在你的项目中使用 dispatchKeyEvent(KeyEvent event)

    @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); 
    }
    

    它会返回一个 keyCode 检查 navigation_next 按钮的 keycode。

    希望这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多