如何从自定义ImageView获取TextView引用?

时间:2010-10-24 17:43:50

标签: android imageview

我想问一下是否有任何方法可以从另一个视图中获取视图。

我的情况是: 我有一个自定义ImageView调用MyImageView。 我的布局是:

FrameLayout:
  MyImageView 
  LiearLayout:
      LiearLayout: 
          TextView 
      LiearLayout:
          TextView

我在MyImageView中有一些代码,我想在LinearLayout下的TextView中编辑文本。

我在MyImageView中的代码选择TextView是:

TextView textView = (TextView) findViewById(id.TextView01);

但是textView始终为null,我无法设置我喜欢的文本。

更多,如果我编码:

TextView textView = (TextView) findViewById(R.id.TextView01);

Eclipse会给我一个错误,并说可以解析id。

那么有没有方法可以从ImageView编辑TextView?

2 个答案:

答案 0 :(得分:1)

首先......这是一个可怕的想法(如果我是你,我会被吓坏了)。而且必须重新考虑如何进行布局,这是一个很大的信号。

无论如何,使用getParent方法可以起作用:

// in your MyImageView
FrameLayout parent = (FrameLayout)getParent();
TextView textView = (TextView) parent.findViewById(R.id.TextView01);

由于TextViews不在您的自定义视图中,因此它的工作方式不正常。

答案 1 :(得分:0)

我认为你总是可以调用getRootView(),然后你可以通过Id搜索视图。只要id在当前视图层次结构中是唯一的,您就应该能够抓取textView,无论它在层次结构中的哪个位置。

与其他答案类似

TextView textView = (TextView) getRootView().findViewById(R.id.textview_01);

如果它在同一个屏幕上,它将始终存在。