2011-09-05 82 views
2

我有一个包含ScrollView的布局,其中包含各种组件,包括ImageView。我发现我可以将TouchListener添加到ImageView中,并且为事件获取的x,y值与ImageView的角部(包括填充)相偏移。因此,我可以轻松处理触摸事件,而无需担心ScrollView的状态。在android中,我可以将子视图添加到ImageView吗?

问题是,我没有看到在ImageView顶部添加视图的方式,以便在某些位置触及ImageView时,可以对其进行视觉更改。

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

解决此问题的最佳方法是什么?我可以派生一个新版本的ImageView,重载绘图方法,并以某种方式使用它? (不知道我怎么在xml中指定它,我可能需要将它设置在活动的onCreate中)

回答

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方法肯定是最好的选择。

1

你可以制作一个相关布局或者一个背景作为你想要的图像而不是一个imageview。那么您可以在该相关布局中拥有子视图。

相关问题