gpt4 book ai didi

android - 我的 Action_DOWN 和我的 Scrollview 之间的冲突

转载 作者:行者123 更新时间:2023-11-30 01:21:02 25 4
gpt4 key购买 nike

正如您在这个 image 上看到的那样,我有一个灰色区域,那里有一些 imageview。该区域是水平 ScrollView 内的 LinearLayout。此外,在每个 ImageView 上,都有一个 OnTouchListener,当出现 ACTION_DOWN 时,它会开始拖放。

如您所知,当我尝试滚动时出现问题。事实上,ACTION_DOWN 被“选中”所以我不能 scroll .

于是我想到了几种解决方案:

  • 放置更高的区域,用户可以在没有任何内容的地方滚动。
  • 不使用 OnTouchListener,而是使用 OnLongClickListener

但这些解决方案都不适合我。您知道如何解决我的问题吗?

我的 xml 代码:

<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.1"
android:background="#5d6164"
android:id="@+id/horizontalScrollView" >

<LinearLayout
android:id="@+id/area2_timetable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center">
</LinearLayout>

</HorizontalScrollView>

我的 OnTouch 方法:

    View.OnTouchListener myOnTouchListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {

int action = event.getAction();
if (action==MotionEvent.ACTION_DOWN)
{
SharedPreferences mSharedPrefs = getSharedPreferences("User", Context.MODE_PRIVATE);
if(mSharedPrefs.getInt("son_active", 0)==1) Son(VariablesManagement.nom_stockage_meal.get(v.getId()));

ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
}
return false;
}
};

我认为我的 java 代码没有用,所以我没有放它(为了有一个明确的问题)但是如果您认为它有帮助,请不要犹豫。

非常感谢!

最佳答案

您需要区分垂直和水平滑动。

尝试如下:

private float y1, y2;

//Adjust this threshold as your need
private static final int MIN_DISTANCE = 20;

View.OnTouchListener myOnTouchListener = new View.OnTouchListener() {

public boolean onTouch(final View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

y1 = event.getY();

break;

case MotionEvent.ACTION_MOVE:

y2 = event.getY();

float deltaY = y2 - y1;

if (Math.abs(deltaY) > MIN_DISTANCE) {

ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);

Toast.makeText(getActivity(), "Swiping vertically!", Toast.LENGTH_SHORT).show();

} else {

// Nothing to do
}

break;
}

return false;
}
};

关于android - 我的 Action_DOWN 和我的 Scrollview 之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37101861/

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