我有一个简单的ViewPager2
由2 Fragment
fragmentsList.add(new FakeFragment());
fragmentsList.add(new TextFragment());
viewPagerAdapter = new ViewPagerAdapter(this, fragmentsList);
viewPager.setAdapter(viewPagerAdapter);
viewPager.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
Log.d(TAG, "onPageScrollStateChanged: onPageScrollState ");
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
Log.d(TAG, "onPageScrolled: onPageScrolled ");
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Log.d(TAG, "onPageSelected: onPageSelected ");
}
});
在TextFragment中,我有一个基本的EditText
。
问题:
单击它时,EditText
光标焦点立即被杀死,我可以在日志中观察到这一点:
2020-10-27 16:34:31.202 23177-23177/com.example.mytestapp D/MainActivity: onPageScrolled: onPageScrolled
2020-10-27 16:34:31.217 23177-23177/com.example.mytestapp D/MainActivity: onPageScrolled: onPageScrolled
ViewPager2
回调OnPageScrolled
和OnPageSelected
在EditText单击时被调用,然后取消其焦点,因为某种原因,视图分页器正在根据日志“滚动”。
经过几次测试后,我发现问题与查看寻呼机方向和转换器有关:
viewPager.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
当我删除此行时,EditText
不再以默认的水平方向失去光标焦点。
如果我将自定义转换器添加到默认方向,则表示再次失去焦点。
如果有人遇到相同的问题,可以告诉我如何解决?