处理软键盘导航箭头

时间:2017-04-22 06:43:04

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

我在这里使用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*/);
    }
}

}

没有可以使用滑动和点击事件。但我的问题是什么

image当我选择 FIRST NAME 并点击平板电脑(三星)上的箭头按钮时,它会导航到 MIDDLE 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; 
    } 
}); 

但没有好处! 如何隐藏该软键?或者如何控制行动? 问题是只有这个键盘,(在三星标签上)在我的手机上没有像这样的键。 如何摆脱这个问题?

1 个答案:

答案 0 :(得分:0)

我知道它太晚了但可能对某人有帮助。

尝试在Project

中使用dispatchKeyEvent(KeyEvent事件)
~ ᐅ docker network create -d bridge www
9e1ab7c25a58fdbdaa1ec46bbcf9c9b37bb6ddc776abe6b2fb47dbb0c100d750
~ ᐅ docker run -d --name w1 --network www busybox top
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
03b1be98f3f9: Pull complete
Digest: sha256:99ccecf3da28a93c063d5dddcdf69aeed44826d0db219aabc3d5178d47649dfa
Status: Downloaded newer image for busybox:latest
fb0c198b002559b6ccd7dd145a394592a7258b1a955012aae8c707a5bea70c86
~ ᐅ docker run -d --name w2 --network www busybox top
13ea6ceb82f7d80d34a8cc3b6ba79bdfcc1d3a5f1df1b5f59a20323db21a7190
~ ᐅ docker exec -it w1 nslookup w2
Server:    127.0.0.11
Address 1: 127.0.0.11

Name:      w2
Address 1: 172.19.0.3 w2.www

~ ᐅ docker exec -it w1 sh

/ # nslookup w2 | awk '/^Address.* w2.*/ { print $3 ; exit }'
172.19.0.3
/ # exit

它会返回一个keyCode检查navigation_next按钮的键代码。

希望这会对你有所帮助。