Android 在充气视图上设置onClick后,Viewpager不再可旋转
我有一个viewpager,其中包含一个图像。如果我使用xml布局创建图像视图,如下所示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
@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()
对于初学者来说匹配正确。