【发布时间】:2012-10-27 10:04:29
【问题描述】:
我已经使用 ViewPager 很长时间了,今天早上,我尝试在 ViewPager 中包含一个 NumberPicker。
我面临的一个大问题是,当尝试滑动查看器时,除了 NumberPicker 之外,它在任何地方都可以工作。
我真的不明白这种行为!
例如 ListView 很好,水平滑动由 ViewPager 处理,垂直滑动由 List 处理。 我对 NumberPicker 也有同样的期待。 NumberPicket 没有理由处理水平滑动
代码比较琐碎,我贴在这里:
ViewPager mPager = (ViewPager) findViewById(R.id.pager);
if (mPager != null)
mPager.setAdapter(mAdapter);
()...
class TabsAdapter extends FragmentPagerAdapter {
public TabsAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new FragmentAccueil();
case 1:
return new FragmentRecherche();
case 2:
return new FragmentFav();
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0)
try {
return TITLES[position]+" "+a.getPackageManager().getPackageInfo(
a.getPackageName(), 0).versionName;
} catch (Exception e) {
// TODO Auto-generated catch block
return TITLES[position];
}
else
return TITLES[position];
}
}
并且 Fragment 布局包含一个 NumberPicker:
<NumberPicker
android:id="@+id/numberPicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
【问题讨论】:
-
片段的布局只包含一个
NumberPicker还是有其他小部件? -
还有其他小部件。其他小部件上的水平滚动很好,问题仅出现在 NumberPicker 上。我猜这个问题来自 NumberPicker,它“吃掉”了触摸事件并且没有将它转发给 ViewPager
-
你能在你使用这个
NumberPicker的地方添加完整的布局文件吗? -
问题也仅与数字选择器有关,所以我猜布局无关紧要,但以防万一:pastebin.com/xyVWEugA
-
是的,布局文件没用。我认为问题在于
NumberPicker使用的EditText在单击时会窃取焦点和触摸事件。不幸的是,我不知道您如何克服这个问题,可能是通过在ViewPager或NumberPicker本身级别拦截事件。
标签: android android-viewpager swipe numberpicker