在android中,我可以将子视图添加到ImageView吗?

时间:2011-09-05 01:08:56

标签: android imageview android-imageview

我有一个包含ScrollView的布局,其中包含各种组件,包括ImageView。我发现我可以向ImageView添加一个TouchListener,我为该事件获得的x,y值偏离ImageView的角落(包括填充)。因此,我可以轻松处理触摸事件,而无需担心ScrollView的状态。

问题在于我没有看到在ImageView顶部添加视图的方法,以便在某些位置触摸时可以对ImageView进行可视化更改。

具体来说,图像中有各种方框,我们想要点击它们时要突出显示。我可以为活动添加一个视图,但是我必须考虑ScrollView的状态才能在正确的位置显示内容。

最好的方法是什么?我可以派生出一个新版本的ImageView,重载draw方法,并以某种方式使用它吗? (不知道我是如何在xml中指定它的,我可能需要在活动的onCreate中设置它)

2 个答案:

答案 0 :(得分:1)

您可以将相对布局或具有背景的内容作为所需图像,而不是仅使用图像视图。那么你可以在那个相对布局中拥有子视图。

答案 1 :(得分:1)

您应该能够按照建议覆盖ImageView的onDraw方法,并在ImageView上绘制内容。 onDraw方法为您提供了可以绘制的Canvas。在XML中,您可以使用您创建的新类的名称而不是“ImageView”(除非您想要添加除ImageView提供的参数之外的参数,这应该非常简单。)

<your.new.awesome.class.with.the.full.namespace
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/awesome_image_view"
    />
  

问题在于我没有看到在ImageView顶部添加视图的方法,以便在某些位置触摸时可以对ImageView进行可视化更改。

您似乎更愿意拥有可以处理的单独视图。您可以通过使用FrameLayout封装ImageView,然后添加任何类型的另一个视图作为该ImageView的兄弟来实现。如果在ImageView之后的FrameLayout中提到了此视图,则会在ImageView上绘制该视图。此解决方案可能不是最有效的解决方案,但它可能会让您入门。覆盖ImageView的onDraw方法肯定是最好的选择。