View.getRoot()
返回View
,因此我们可以使用getResourceName(View.getId())
轻松找出哪个是根视图。
View.getParent()
...,虽然我希望它也返回View
作为父项,但实际上只返回{{1}}的实例,它似乎只有非常少的有用方法/字段。太糟糕了。
那么,有没有办法知道父母的身份证?我相信ViewParent
的父级也是View
,因此它应该有mID字段。
我真的很想知道Google为什么不让View
返回View.getParent()
。这是有道理的,只有当View
以外的其他东西可以作为父级时,据我所知,它仅限于View
及其子类。
答案 0 :(得分:18)
ViewParent
只是可以让子项实现的任何View的接口。您回来的课程大部分时间都是ViewGroup
的实例,例如LinearLayout
或RelativeLayout
。我不确定你的名字是什么意思,但如果你想获得课程名称,你可以像往常一样:view.getParent().getClass().getName()
。
答案 1 :(得分:6)
docs表示父母不一定是View
:
public final ViewParent getParent()
在API级别1中添加获取此视图的父级。请注意 parent是ViewParent,不一定是View。
返回此视图的父级。
但是ViewParent
的所有实现都继承自View
。这应该是使用View
接口将父级与ViewParent
分离的设计决策,尽管SDK中的所有实现都是视图。
答案 2 :(得分:3)
首先尝试投射它。例如,如果您尝试获取id的View的父级是TableRow,那么执行
((TableRow)View.getParent()).getID()