gpt4 book ai didi

Android:RealViewSwitcher 不垂直滚动

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:21 26 4
gpt4 key购买 nike

我正在使用 RealViewSwitcher 滑动 View ,没关系,我的问题类似于 this一。我将尝试通过这张图片解释一下我的情况 scenario

listview <------> 详细 View ------> 滑动 View (水平)。详细 View 仅显示部分内容,如果尝试滚动则什么也不会发生。

详细布局(无垂直滚动)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColorHint="#FF0000"
android:textSize="12dp"
android:textStyle="bold"
android:typeface="sans" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="150dip"
android:layout_height="120dip"
android:scaleType="centerCrop"
android:src="@drawable/stub"/>
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dip"
android:textColor="#999999"
android:textColorLink="#ff0000"
android:textSize="20dip"
android:textStyle="normal"
android:typeface="sans" />
</LinearLayout>

使用 RealViewSwitcher 进行布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">

<it.application.ppn.lib.RealViewSwitcher
android:id="@+id/horizontal_pager"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1">

</it.application.ppn.lib.RealViewSwitcher>

</LinearLayout>

最佳答案

我遇到了同样的问题,通过拦截 RealViewSwitcher 中的触摸事件找到了解决方案。

编辑:之前发布的变体不适用于较新的 API。第三次修改代码。

将这些行添加到 RealViewSwitcher 实现中:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {

// prevent vertical scrolling when view switching in progress
if (!mScroller.isFinished())
return true;

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mScrollLocked = false;
mLastX = event.getX();
mLastY = event.getY();
mDeltaX = 0;
mDeltaY = 0;
onTouchEvent(event);
break;

case MotionEvent.ACTION_MOVE:
final float x = event.getX();
final float y = event.getY();
mDeltaX += Math.abs(x - mLastX);
mDeltaY += Math.abs(y - mLastY);
mLastX = x;
mLastY = y;
if (mDeltaX > mDeltaY) {
mScrollLocked = true;
onTouchEvent(event);
} else {
snapToDestination();
}
break;
}

if (mScrollLocked)
return true; // prevent furhter processing

return super.onInterceptTouchEvent(event);
}

EDIT2:还需要编辑onTouchEvent方法并替换case MotionEvent.ACTION_DOWN: body如下:

    case MotionEvent.ACTION_DOWN:

/*
* If being flinged and user touches, stop the fling. isFinished will be false if being flinged.
*/
mTouchState = mScroller.isFinished() ? TOUCH_STATE_REST : TOUCH_STATE_SCROLLING;

if (mTouchState == TOUCH_STATE_SCROLLING) {
mScroller.abortAnimation();
}

// Remember where the motion event started
mLastMotionX = x;

break;

关于Android:RealViewSwitcher 不垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com