Android:如何获取父视图的ID?

时间:2013-01-01 16:22:16

标签: android

View.getRoot()返回View,因此我们可以使用getResourceName(View.getId())轻松找出哪个是根视图。

View.getParent() ...,虽然我希望它也返回View作为父项,但实际上只返回{​​{1}}的实例,它似乎只有非常少的有用方法/字段。太糟糕了。

那么,有没有办法知道父母的身份证?我相信ViewParent的父级也是View,因此它应该有mID字段。

我真的很想知道Google为什么不让View返回View.getParent()。这是有道理的,只有当View以外的其他东西可以作为父级时,据我所知,它仅限于View及其子类。

3 个答案:

答案 0 :(得分:18)

ViewParent只是可以让子项实现的任何View的接口。您回来的课程大部分时间都是ViewGroup的实例,例如LinearLayoutRelativeLayout。我不确定你的名字是什么意思,但如果你想获得课程名称,你可以像往常一样: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()