我有一个包含图片的viewpager。如果我使用xml布局创建图像视图,如下所示
SELECT a.reg_id, a.fname, a.lname, a.mobile, b.qualification
FROM personal_details a, education_details b
WHERE a.reg_id = b.reg_id
GROUP BY b.qualification
添加onClickListener后,我再也无法在页面之间滑动视图寻呼机。没有onClickListener,我可以这样做。
但是,如果我从代码中创建我的ImageView(而不是使用xml布局),如下所示
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
final int realPosition = getItemPosition(position);
View view = LayoutInflater.from(mContext).inflate(R.layout.item_adsong, container, false);
ImageView imageView = (ImageView)view.findViewById(R.id.adsong_img);
/... set to the image.../
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onClickPage(realPosition);
}
});
container.addView(view);
return view;
}
我现在可以滑动视图寻呼机,我可以随意点击。为什么我上面的第一个例子是拦截滑动,而第二个例子不是?我怎么能修复上面的第一个例子,允许刷卡和onClick仍然工作(我更喜欢使用布局,因为我有几个例如一些TextViews而不仅仅是ImageView在我的视图寻呼机中显示)。谢谢!
答案 0 :(得分:1)
经过进一步彻底调试和调查后,根据https://groups.google.com/forum/#!topic/android-developers/wIqNP4fzJQc找到了问题。问题的原因是因为我的.xml布局中存在TextView。默认情况下,TextView是可滚动的。
鉴于TextView是可滚动的,ViewPager然后允许文本滚动,不拦截滚动触摸并传递给孩子。因此,ViewPager的滚动触摸不起作用。
要解决此问题,我会覆盖TextView的canScrollHorizontal
函数以返回false。这解决了问题
public class MyTextView extends TextView {
//...
@Override
public boolean canScrollHorizontally(int direction) {
return false;
}
//....
注意:使用setHorizontallyScrolling(false
)或在TextView的XML中设置android:scrollHorizontally="false"
属性无法以某种方式解决问题。
希望这可以帮助一些面对ViewPager的人不再可滚动的问题。