Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式获取ScrollView的子级_Java_Android_Android Scrollview - Fatal编程技术网

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);
}