android - 在 android 中,我可以将 subview 添加到 ImageView 吗?

标签 android imageview android-imageview

我有一个包含 ScrollView 的布局,其中包含各种组件,包括 ImageView。我发现我可以将 TouchListener 添加到 ImageView,并且我为事件获得的 x、y 值从 ImageView 的角(包括填充)偏移。因此,我可以轻松处理触摸事件,而不必担心 ScrollView 的状态。

问题是我没有看到在 ImageView 顶部添加 View 的方法,这样当在某些位置触摸它时我可以对 ImageView 进行视觉更改。

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

处理此问题的最佳方法是什么?我可以派生一个新版本的 ImageView,重载 draw 方法,然后以某种方式使用它吗? (不确定我如何在 xml 中指定它,我可能需要在 Activity 的 onCreate 中设置它)

最佳答案

您应该能够按照您的建议覆盖 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"
    />

The problem is that I don't see a way to add a view on top of the ImageView so that I can make a visual change to the ImageView when it's touched in certain locations.

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

关于android - 在 android 中,我可以将 subview 添加到 ImageView 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7303129/

相关文章:

java - Android中的单例类如何使用?

java - 为什么ImageView的getX、getY、setX、setY在RelativeLayout中不代表实际值?

android - 如何在Android中下载和保存图像

Android KenBurnEffect 问题

android - Facebook 帐户工具包集成在 android 中获取 facebook 个人资料图片

android - 如何找出在 Android Studio/Gradle 中的库中添加了多少方法

android - 如何为默认的 swagger android 客户端设置连接和套接字超时

android - 在 ImageView 上放置一个按钮

android - 在 android 5 (api 21) 上设置 ImageView colorFilter

java - Android万能音乐播放器在MediaItem ViewHolder中添加专辑封面