我正在创建自定义视图。我需要解析父母,直到我得到可滚动的视图。 如何识别视图是否可滚动视图?
一种简单的方法是:
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事件?
提前致谢。
答案 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?
}