Android 如何以编程方式显示带有文本(或按钮或其他)覆盖的图像?

Android 如何以编程方式显示带有文本(或按钮或其他)覆盖的图像?,android,textview,imageview,overlay,scrollview,Android,Textview,Imageview,Overlay,Scrollview,我有一个通过ImageView元素显示的图像。基于用户输入(例如,长按),我想在图像上覆盖一些东西,这样覆盖在屏幕的中间(或者至少在左上角以外的某个地方……但是关键是它覆盖了图像,并且我可以在代码中选择那个位置)。它可能是一个信息性的文本视图项目(而不是一个祝酒词)。,或一些短暂的缩放按钮) 这一切最终都会成为某种ScrollView的孩子(很可能,但如果你有更好的建议,请让我知道),所以无论出现什么文本或按钮,都不应排除这种可能性。但是WebView不是一个选项。除非你有更好的建议,否则我可能

我有一个通过ImageView元素显示的图像。基于用户输入(例如,长按),我想在图像上覆盖一些东西,这样覆盖在屏幕的中间(或者至少在左上角以外的某个地方……但是关键是它覆盖了图像,并且我可以在代码中选择那个位置)。它可能是一个信息性的文本视图项目(而不是一个祝酒词)。,或一些短暂的缩放按钮)

这一切最终都会成为某种ScrollView的孩子(很可能,但如果你有更好的建议,请让我知道),所以无论出现什么文本或按钮,都不应排除这种可能性。但是WebView不是一个选项。除非你有更好的建议,否则我可能会用相对论

我希望以编程方式完成这项工作,而不是使用XML。我不期望任何人能提供完整的程序(除非已经有一个程序了……不过我还没有找到)。我只需要一个坚实的轮廓,如何使这发生在一个图像上的一些文字正确

编辑:我找了一整天,发现了很多想法,但它们要么是纯XML的,要么与我在这里尝试的完全不同。然而,如果你有一个合适的指针,请让我知道

编辑2:下面是我创建的一个工作示例,它实现了我的目标。希望这对其他人有用!animage1是一个1000x1000px的图像。。。关键是它比你使用的屏幕大。animage2相对较小(100x100px)。“菜单”被重载以切换第二个图像的可见性,作为概念证明


可以扩展视图类并重写ondraw方法。使用画布,您可以绘制位图,也可以在上面绘制文本

从我所理解的,你需要文本出现在中间,独立于滚动视图。这就是我要制作的UI的结构

<FrameLayout>
    <ScrollView>
        <Imageview/>
    </ScrollView>
    <TextView/>
</FrameLayout>

上面的代码应该放在onCreate方法中。这就是你大致的做法。您需要进行一些修改或添加以使其适合您。

您可以扩展view类并重写ondraw方法。使用画布,您可以绘制位图,也可以在上面绘制文本

从我所理解的,你需要文本出现在中间,独立于滚动视图。这就是我要制作的UI的结构

<FrameLayout>
    <ScrollView>
        <Imageview/>
    </ScrollView>
    <TextView/>
</FrameLayout>

上面的代码应该放在onCreate方法中。这就是你大致的做法。您需要进行一些修改或添加以使其适合您。

这是一个想法,但使用标准的ImageView和TextView类应该可以做到这一点。。。而且远没有那么复杂。同样,出于这个目的,它可能是文本,但也可能是按钮、菜单或其他东西。我可以创建一个ScrollView,我可以在其中放置一个ImageView和一个TextView,但是我还没有让对齐工作正常。。。而且当它出现时,textview应该独立地覆盖Scrollview。在这种情况下,对于最简单的解决方案,使用framelayout。它将根据它的顺序画出它的子视图。FrAMELayOUT做的是同样的事情:RealValayOUT是:文本被困在角落里而不是在屏幕的中间,它与滚动一起移动。我需要重叠的文本出现并保持在中心,与下面的滚动状态无关。在某种程度上,这就像一个祝酒词,但同样,这可能是一个按钮或其他比覆盖在下面图像上的文本更复杂的对象。注意:我想投票,但我还没有足够的声誉。。。我正在通过XML对FrameLayout进行一些测试,但我真的希望看到一种编程方式来实现这一点。它现在似乎工作得更好了。。。再次感谢您的建议!如果可以,请投票给我。这是一个想法,但这应该可以通过使用标准的ImageView和TextView类来实现。。。而且远没有那么复杂。同样,出于这个目的,它可能是文本,但也可能是按钮、菜单或其他东西。我可以创建一个ScrollView,我可以在其中放置一个ImageView和一个TextView,但是我还没有让对齐工作正常。。。而且当它出现时,textview应该独立地覆盖Scrollview。在这种情况下,对于最简单的解决方案,使用framelayout。它将根据它的顺序画出它的子视图。FrAMELayOUT做的是同样的事情:RealValayOUT是:文本被困在角落里而不是在屏幕的中间,它与滚动一起移动。我需要重叠的文本出现并保持在中心,与下面的滚动状态无关。在某种程度上,这就像一个祝酒词,但同样,这可能是一个按钮或其他比覆盖在下面图像上的文本更复杂的对象。注意:我想投票,但我还没有足够的声誉。。。我正在通过XML对FrameLayout进行一些测试,但我真的希望看到一种编程方式来实现这一点。它现在似乎工作得更好了。。。再次感谢您的建议!如果可以,请投我一票。
    ViewGroup.LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.FILL_PARENT);

    ScrollView sv = new ScrollView(this);
    sv.setLayoutParams(lp);

    TextView tx = new TextView(this);
    tx.setLayoutParams(lp);
    tx.setGravity(Gravity.CENTER);
    tx.setText("Test");

    FrameLayout fr = new FrameLayout(this);        
    fr.setLayoutParams(lp);
    fr.addView(sv);
    fr.addView(tx);
    setContentView(fr);