Android 如何以编程方式显示带有文本(或按钮或其他)覆盖的图像?
我有一个通过ImageView元素显示的图像。基于用户输入(例如,长按),我想在图像上覆盖一些东西,这样覆盖在屏幕的中间(或者至少在左上角以外的某个地方……但是关键是它覆盖了图像,并且我可以在代码中选择那个位置)。它可能是一个信息性的文本视图项目(而不是一个祝酒词)。,或一些短暂的缩放按钮) 这一切最终都会成为某种ScrollView的孩子(很可能,但如果你有更好的建议,请让我知道),所以无论出现什么文本或按钮,都不应排除这种可能性。但是WebView不是一个选项。除非你有更好的建议,否则我可能会用相对论 我希望以编程方式完成这项工作,而不是使用XML。我不期望任何人能提供完整的程序(除非已经有一个程序了……不过我还没有找到)。我只需要一个坚实的轮廓,如何使这发生在一个图像上的一些文字正确 编辑:我找了一整天,发现了很多想法,但它们要么是纯XML的,要么与我在这里尝试的完全不同。然而,如果你有一个合适的指针,请让我知道 编辑2:下面是我创建的一个工作示例,它实现了我的目标。希望这对其他人有用!animage1是一个1000x1000px的图像。。。关键是它比你使用的屏幕大。animage2相对较小(100x100px)。“菜单”被重载以切换第二个图像的可见性,作为概念证明Android 如何以编程方式显示带有文本(或按钮或其他)覆盖的图像?,android,textview,imageview,overlay,scrollview,Android,Textview,Imageview,Overlay,Scrollview,我有一个通过ImageView元素显示的图像。基于用户输入(例如,长按),我想在图像上覆盖一些东西,这样覆盖在屏幕的中间(或者至少在左上角以外的某个地方……但是关键是它覆盖了图像,并且我可以在代码中选择那个位置)。它可能是一个信息性的文本视图项目(而不是一个祝酒词)。,或一些短暂的缩放按钮) 这一切最终都会成为某种ScrollView的孩子(很可能,但如果你有更好的建议,请让我知道),所以无论出现什么文本或按钮,都不应排除这种可能性。但是WebView不是一个选项。除非你有更好的建议,否则我可能
可以扩展视图类并重写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);