Java 以编程方式获取ScrollView的子级
我制作了一个自定义的Java 以编程方式获取ScrollView的子级,java,android,android-scrollview,Java,Android,Android Scrollview,我制作了一个自定义的滚动视图,其中有一个子视图(布局)。在CustomScrollView.java中使用findViewByid通过ID查找子应用程序会导致应用程序崩溃,因此是否可以以类似于this(检测自定义scrollview)或getParent()的简单方式查找它(哪个检测scrollview和子视图所在的父布局) 我正在尝试将requestDisallowWinterCeptTouchEvent(true);应用于自定义ScrollView的子级 xml: 问题: 简言之,我想找到自
滚动视图
,其中有一个子视图(布局)。在CustomScrollView.java
中使用findViewByid
通过ID查找子应用程序会导致应用程序崩溃,因此是否可以以类似于this
(检测自定义scrollview)或getParent()的简单方式查找它(哪个检测scrollview和子视图所在的父布局)
我正在尝试将requestDisallowWinterCeptTouchEvent(true);
应用于自定义ScrollView
的子级
xml:
问题:
简言之,我想找到自定义ScrollView的子级,即id为dynamic_status
的布局,无需使用findViewById
您应该可以这样做:
@Override
public boolean onTouchEvent(MotionEvent ev) {
((ConstraintLayout)getChildAt(0)).requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(ev);
}
您始终可以使用getChildAt
访问子视图(嵌套比当前视图更深的视图)。由于requestDisallowerWinterCeptTouchEvent
仅对视图组可用,因此您必须将其直接强制转换为ConstraintLayout,或者为了更好地重用,将其转换为视图组
请注意,我没有包括任何检查,如果孩子是可用的
这段代码对于Kotlin和Java也是一样的。它没有任何区别(语法上是的,但概念是相同的)。它的Java不是您需要使用的Java中的Kotlinfindviewbyid@Ashish哦,好的,对不起,我对kotlin不熟悉,对java也很陌生。谢谢你提供的信息。谢谢你,代码正确地识别了孩子((ConstraintLayout)getChildAt(0))
。哦,好吧,感谢您对RequestDisallowWinterCeptTouchEvent
的解释。但事实是,我还没有让它工作,并且在将它添加到onInterceptTouchEvent(MotionEvent ev){}
或onTouchEvent(MotionEvent p_event){}时没有注意到任何区别
。我想这有点离题了,但我在为自定义ScrollView中的孩子启用单击事件以及同时为ScrollView启用滚动时遇到了问题。不客气!你能进一步解释一下你的问题吗?我还不太明白你想做什么。你想在单击孩子的同时触发吗滚动滚动视图?嗯,是的,只要单击(或触摸)即可子视图中视图的事件在不禁用scrollview的scroll功能的情况下工作。到目前为止,它仅在子视图或scrollview中工作。我已经使用MotionEvents DOWN、MOVE和UP、true/false布尔值ex.if(action==MotionEvent.action_MOVE){disable_scroll=false;}
,但问题是,单击和滑动都需要操作_DOWN
。我理解您的问题,但我真的想不出一个方便的方法来解决这个问题。不过,也许一个关于触摸事件的讨论会对您有所帮助。好的,没关系,我已经感谢您提供的帮助。我会阅读这篇文章,谢谢。
@Override
public boolean onTouchEvent(MotionEvent ev) {
// Add here
return super.onTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
((ConstraintLayout)getChildAt(0)).requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(ev);
}