如何识别视图是否是Android中的可滚动视图?

时间:2015-04-09 16:05:44

标签: android view android-custom-view

我正在创建自定义视图。我需要解析父母,直到我得到可滚动的视图。 如何识别视图是否可滚动视图?

一种简单的方法是:

while(view != null){
        if(view.getParent() instanceof View) {
            view = (View) view.getParent();
        }
        else{
            view = null;
        }

        if(view instanceof ListView){
            scrollableParentView = view;
            break;
        }
        else if(view instanceof ScrollView){
            scrollableParentView = view;
            break;
        }
        else if(view instanceof GridView){
            scrollableParentView = view;
            break;
        }
        else if(view instanceof HorizontalScrollView){
            scrollableParentView = view;
            break;
        }
    }`

使用这种方法,如果明天我们获得Android的新可滚动视图,我的实现将失败。

请提出一些好方法。

还有一个问题:如何在自定义子视图中侦听父scrollView事件?

提前致谢。

2 个答案:

答案 0 :(得分:0)

要检测可滚动视图,您可以检查它是否可以滚动到某个特定方向:

if (view.canScrollHorizontally(1)) {
    // Scrollable to right
} else if (view.canScrollHorizontally(-1)) {
    // Scrollable to left
} else if (view.canScrollVertically(1)) {
    // Scrollable to top
} else if (view.canScrollVertically(-1)) {
    // Scrollable to bottom
} else {
    // Un-scrollable
}

答案 1 :(得分:0)

你可以尝试一下try catch实现,我认为它会抛出一个ClassCastException ..

try{
//scrollview initialization
}catch(ClassCastException e){
//error message?
}