Android 在充气视图上设置onClick后,Viewpager不再可旋转

Android 在充气视图上设置onClick后,Viewpager不再可旋转,android,android-layout,onclick,android-viewpager,Android,Android Layout,Onclick,Android Viewpager,我有一个viewpager,其中包含一个图像。如果我使用xml布局创建图像视图,如下所示 @Override public Object instantiateItem(final ViewGroup container, final int position) { final int realPosition = getItemPosition(position); View view = LayoutInflater.from(mContext).inflate(R.layo

我有一个viewpager,其中包含一个图像。如果我使用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;
}
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
    final int realPosition = getItemPosition(position);
    ImageView view = new ImageView(mContext);
    /... set to the image.../

    view.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            onClickPage(realPosition);
        }
    });
    container.addView(view);
    return view;
}
添加onClickListener后,我无法再在页面之间滑动我的视图寻呼机。如果没有听众,我可以这样做

但是,如果我按照下面的代码(而不是使用xml布局)创建ImageView


我现在可以滑动浏览页面了,我可以随意点击。为什么我上面的第一个例子是拦截刷卡,而第二个不是?我如何修复上面的第一个示例,以允许滑动和onClick仍能工作(我更喜欢使用布局,因为我有多个视图,例如一些文本视图,而不仅仅是ImageView显示在我的视图寻呼机中)。谢谢

在进一步彻底调试和调查后,根据发现问题。问题的原因是my.xml布局中存在TextView。默认情况下,文本视图可滚动

如果TextView是可滚动的,那么ViewPager将通过不拦截滚动触摸并传递给孩子来允许文本滚动。因此,ViewPager的滚动触摸不起作用

为了解决这个问题,我重写TextView的
canScrollHorizontal
函数以返回false。这就解决了问题

public class MyTextView extends TextView {
    //...
    @Override
    public boolean canScrollHorizontally(int direction) {
        return false;
    }
    //....
注意:在TextView的XML中使用
setHorizontallyScrolling(false
)或设置
android:scrollHorizontally=“false”
属性并不能解决问题


希望这能帮助一些面对ViewPager不再可滚动问题的人

尝试更改充气调用:
View View View=LayoutInflater.from(mContext)。充气(R.layout.item\u adsong,null)
我怀疑您是否打算将viewpager的布局参数继承到视图项上。尝试过了,但不起作用:(你能发布剩下的寻呼机适配器代码吗?很抱歉,它涉及一些继承类,因此会使显示所有内容变得复杂。主要的是,与直接使用ImageView创建页面略有不同,onClick并没有拦截滑动。但是当我们使用布局膨胀时,它不起作用。也许有一些建议我该怎么做进一步调试也会有所帮助。我认为您应该确保实际添加了多个视图,并且
getCount()
对于初学者来说匹配正确。