我想问一下是否有任何方法可以从另一个视图中获取视图。
我的情况是: 我有一个自定义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?
答案 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);
如果它在同一个屏幕上,它将始终存在。