我有带有三个片段的视图页面管理器,其中一个是带有滚动视图的框架布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
</ScrollView>
<Button
android:id="@+id/buttonRemove"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_button_red"
android:layout_gravity="bottom"
android:layout_margin="4dp"
android:text="@string/button_remove_last_round"
android:textColor="#ffffff"
android:textSize="24sp"/>
</FrameLayout>
如果我在按钮上滑动,它会工作。但是如果我在滚动视图上滑动,它就不起作用了,只有向上/向下滚动起作用。
编辑:我试图覆盖滚动视图的OnTouchEvent:
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
touchX = ev.getX();
touchY = ev.getY();
return super.onTouchEvent(ev);//if I change it to 'break', then only swipe works, but no scroll
case MotionEvent.ACTION_MOVE:
if(Math.abs(touchX-ev.getX())<40){
return super.onTouchEvent(ev);//Scroll works perfectly
}else{
return false;//Scroll disabled, but swipe still not working
}
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
touchX=0;
touchY=0;
break;
}
return false;
}
现在我可以禁用滚动,但滑动仍然不起作用,如果X点之间的差异超过40,我将事件传递给viewpager,但viewpager的onTouchListener没有收到此事件;
面向2019年的未来读者
使用ViewPager2来避免这个问题。你可以在这个主题中找到ViewPager2实现的好例子。
问题是不清楚你想要发生什么滚动,是ViewPager的滚动还是滚动视图的滚动。如果你真的需要一个滚动内滚动,那么你需要覆盖内部滚动视图的OnTouchListener,并添加代码来决定何时捕捉和使用触摸,以及何时将其传递回父视图。
在这种情况下,您可以执行一些操作来测试轻扫是否向上/向下,然后保持触摸,否则,如果轻扫是横向的,则将其传回。
好了,我在@yedidyak的帮助下找到了解决办法。我编写了我的自定义ScrollView:
public class CustomScrollView extends ScrollView {
float touchX = 0;
float touchY = 0;
ViewPager parentPager;
public void setParentPager(ViewPager parentPager) {
this.parentPager = parentPager;
}
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomScrollView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getActionMasked()){
case MotionEvent.ACTION_DOWN:
touchX = ev.getX();
touchY = ev.getY();
return super.onTouchEvent(ev);
case MotionEvent.ACTION_MOVE:
if(Math.abs(touchX-ev.getX())<40){
return super.onTouchEvent(ev);
}else{
if (parentPager==null) {
return false;
} else {
return parentPager.onTouchEvent(ev);
}
}
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
touchX=0;
touchY=0;
break;
}
return super.onTouchEvent(ev);
}
}
然后在片段中,我将视图页码器放到此视图中,它可以完美地工作
我在Scrollview中有Recyclerview 现在,滚动时,layoutStaticContent保持固定在顶部
问题内容: 我正在开发一个应用程序。在我的应用程序中,我正在使用listview显示json中的数据。所有数据完美显示。但是我想要的是先显示10个对象,然后显示加载项,然后显示其余10个。我的json响应如下。 Interestsent.java EndlessScroolListener.java CustomAdapterSent.java 公共类CustomAdapterSent扩展Base
我同时使用了Gallery和ViewPager小工具,我从web服务中获取图像,但我不能将它们放在ViewPager中,但在Gallery中很容易。我用这个教程是为了view pager http://mobile . tuts plus . com/tutorials/Android/Android-user-interface-design-horizontal-view-paging/ 我想
问题内容: 考虑我有一个问题清单。当我单击第一个问题时,它应该自动带我到页面底部。 实际上,我确实知道可以使用jQuery完成此操作。 因此,您能为我提供一些文档或一些链接,以找到该问题的答案吗? 编辑:需要滚动到页面底部的特定HTML 元素 问题答案: 不需要jQuery。我从Google搜索获得的大多数热门结果都给了我这个答案: 在嵌套元素的地方,文档可能不会滚动。在这种情况下,您需要定位要滚
我有一个问题清单。当我点击第一个问题时,它应该会自动把我带到页面底部。 事实上,我确实知道这可以使用jQuery来完成。 所以,你能给我一些文件或一些链接,我可以找到这个问题的答案吗? 编辑:需要滚动到页面底部的特定HTML元素
我有一个按钮,当点击应该平滑地滚动到顶部。平稳过渡并不奏效。现场网站。-->http://acetronaut.com 这里还有一个代码页。不管用。https://codepen.io/anon/pen/lbpwrv HTML: CSS: jQuery: