Android 安卓:Can';不导入ViewRoot
我正在编写一个应用程序,我想从一个Android 安卓:Can';不导入ViewRoot,android,Android,我正在编写一个应用程序,我想从一个视图对象开始,使用getParent()沿着视图层次结构走到ViewRoot,我希望使用instanceof来检测它 看起来很简单,但我已经有麻烦了,因为我似乎无法导入ViewRoot。在我的电话线上: import android.view.ViewRoot; 我得到: 无法解析导入android.view.ViewRoot 我已经在这个环境中编写了几十个应用程序,在阳光下导入所有东西,但我从来没有遇到过这样的问题 Eclipse 3.52,目标是Andro
视图
对象开始,使用getParent()
沿着视图
层次结构走到ViewRoot
,我希望使用instanceof
来检测它
看起来很简单,但我已经有麻烦了,因为我似乎无法导入ViewRoot
。在我的电话线上:
import android.view.ViewRoot;
我得到:
无法解析导入android.view.ViewRoot
我已经在这个环境中编写了几十个应用程序,在阳光下导入所有东西,但我从来没有遇到过这样的问题
Eclipse 3.52,目标是Android 2.2及更高版本。没有可导入的类
ViewRoot
如果您只需要顶层视图,那么view.getRootView()
会提供您所需要的吗?正如@Phillip Fitzsimmons所说,您可能需要这种方法:
View.getRootView()
ViewRoot类确实存在,但您无法从android sdk访问它。我不知道为什么。你可以看到它的代码
更新:对评论的回应。你可以这样横穿父母
Log.d(TAG, "traversing parents of " + currentView);
ViewParent vp = currentView.getParent();
View rootView = currentView.getRootView();
while (vp != null) {
Log.d(TAG, "Parent: " + vp);
vp = vp.getParent();
if (vp.equals(rootView))
break;
}
android.view.ViewRoot在某些时候似乎已被弃用。它(至少)在build1.0R1()中,并且似乎仍然存在于姜饼中(请参阅android.view包中的ViewRoot链接)。当然,棒棒糖已经消失了(可能更早)。 ...
更新:我刚刚查看了grepcode.com,它显示android.view.ViewRoot在1.5_r4中排名第一,在2.3.7_r1中排名最后。该类是框架的一部分,而不是公共SDK的一部分,因此普通应用程序无法使用它。我在谷歌上搜索了“import android.view.ViewRoot”,并获得了超过100K的点击率。我想一层一层地向上走,并在前进的过程中显示每个视图类对象。所以我不想得到根视图,我只想知道我什么时候到了那里,也就是说,什么时候我完成了。不,因为我想一层一层地往上走,并在前进的过程中显示每个视图类对象。所以我不想“得到”根视图,我只想知道我什么时候到了那里,也就是说,我想知道我什么时候到了顶端。哦,我明白了。那么,当你转到根视图时,它会不会工作,而不是使用isinstance来比较层次结构:view.getParent().equals(originalView.getRootView())?我决定在开始遍历树之前先做一个getRootView(),然后当我得到每个更高的父视图时,我会将它与之比较,以查看我何时处于顶端,基本上就是你上面描述的。我已经测试过了,效果很好。谢谢