【发布时间】:2015-09-30 13:52:15
【问题描述】:
两天以来我一直在寻找解决这个问题的方法,但还没有成功。我已经使用 View pager 在我的应用程序中显示列表视图的详细信息,当刷卡时会显示下一个列表项的详细信息。我在视图寻呼机单个项目内有水平列表视图的要求。现在我的问题是当我想滑动这个水平列表视图时,整个视图寻呼机项目正在被滑动,我还为我的水平列表视图处理了触摸事件以禁止View Pager 的滑动操作,但 View pager 仍然被滑动。请帮助我,下面是我的代码
CustomViewPager.Java
import com.devpoint.adapter.HorizontalListView;
import android.content.Context;
import android.graphics.Rect;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class CustomViewPager extends ViewPager {
private boolean scrollDisable = false;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(scrollDisable) {
return false;
} else {
return super.onInterceptTouchEvent(ev);
}
}
public void disableScroll() {
scrollDisable = true;
}
public void enableScroll() {
scrollDisable = false;
}
}
它是我的 View Pager Item 中的单个项目
details_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFFFFF" >
<ScrollView
android:id="@+id/scrollviewid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="2dp" >
------------------------
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/padding_medium"
android:background="#FFFFFF"
android:clickable="true"
android:orientation="vertical"
android:padding="35dp"
card_view:cardCornerRadius="@dimen/padding_radius" >
<TableRow
android:layout_width="match_parent"
android:layout_height="170dp"
android:background="#FFFFFF"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<com.devpoint.adapter.HorizontalListView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:columnWidth="60dp"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:padding="10dp"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
</TableRow>
</android.support.v7.widget.CardView>
</ScrollView>
</RelativeLayout>
我在适配器内处理了水平列表视图的触摸项目
cardview.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0,
MotionEvent ev) {
switch(ev.getAction()) {
case MotionEvent.ACTION_DOWN:
DetailsViewpagerFragment.viewPager.disableScroll();
//enable swiping
scrollview.setEnabled(false);
break;
case MotionEvent.ACTION_MOVE:
DetailsViewpagerFragment.viewPager.disableScroll();
scrollview.setEnabled(false);
break;
case MotionEvent.ACTION_UP:
DetailsViewpagerFragment.viewPager.enableScroll();
scrollview.setEnabled(true);
break;
}
return false;
}
});
注意:我在我的应用程序中使用片段。谢谢
任何帮助将非常非常非常感谢......
【问题讨论】:
标签: android android-viewpager ontouchlistener horizontallistview