14

View.getRoot()返回View,所以我们可以很容易地通过使用找出哪个是根视图getResourceName(View.getId())

View.getParent()...,虽然我希望它也返回View它是父级,但实际上只返回一个ViewParent似乎很少有用的方法/字段的实例。糟透了。

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

我真的很想知道为什么谷歌不让View.getParent()return View。这是有道理的,只有当其他东西不是View父类时,据我所知,它仅限于View及其子类。

4

3 回答 3

19

ViewParent只是任何可以有子视图的视图实现的接口。大多数情况下,您返回的类将是 a ViewGroup、likeLinearLayout或的实例RelativeLayout。我不确定您所说的“名称”是什么意思,但如果您想获得类名,您可以像往常一样这样做:view.getParent().getClass().getName().

于 2013-01-01T17:34:46.053 回答
6

文档声明父母不一定View是:

public final ViewParent getParent()

在 API 级别 1 中添加 获取此视图的父级。请注意,父级是 ViewParent 而不一定是 View。

返回此视图的父级。

ViewParent但是继承自的所有实现View。尽管 SDK 中的所有实现都是视图,但这应该是一个将父级与View使用接口分离的设计决策。ViewParent

于 2013-01-01T18:15:45.227 回答
3

尝试先投射它。例如,如果您尝试获取 id 的 View 的父级是 TableRow,则执行

((TableRow)View.getParent()).getID()
于 2013-01-01T18:22:59.000 回答