【问题标题】:How to get TextView reference from a custom ImageView?如何从自定义 ImageView 获取 TextView 参考?
【发布时间】:2010-10-26 00:36:01
【问题描述】:

我想问一下有没有什么方法可以从另一个视图中获取一个视图。

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

FrameLayout:
  MyImageView 
  LiearLayout:
      LiearLayout: 
          TextView 
      LiearLayout:
          TextView

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

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

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

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

更多,如果我编写此代码:

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

Eclipse 会给我一个错误,说 can;t resolve the id.

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

【问题讨论】:

    标签: android imageview


    【解决方案1】:

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

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

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

    它没有按照您的方式工作,因为 TextViews 不在您的自定义视图中。

    【讨论】:

    • 谢谢。有用。实际上,我怀疑触摸事件是否应该在视图或活动中实现。这次我选择在 View 中实现。于是问题就出来了! :(
    【解决方案2】:

    我认为您始终可以调用 getRootView() 并从那里您可以按 Id 搜索视图。只要 id 在当前视图层次结构中是唯一的,无论它在层次结构中的哪个位置,您都应该能够获取 textView。

    与其他答案非常相似

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

    如果它在同一个屏幕上,它就会一直在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      相关资源
      最近更新 更多