【问题标题】:Android SurfaceView and FragmentsAndroid SurfaceView 和 Fragments
【发布时间】:2013-10-14 10:27:59
【问题描述】:

我希望SurfaceView 位于TextView 之上,这样我就可以在文本顶部显示各种不同的实线。

我在网上看到的所有教程都没有使用Fragments,这对我来说是个问题,因为我的布局是在片段中设计的。 如何从我的片段中设置这个表面视图?

【问题讨论】:

    标签: android android-fragments surfaceview


    【解决方案1】:

    首先,我不相信你可以让SurfaceView“坐在”TextView 之上。 SurfaceView 将擦除它下面的视图层次结构中的所有内容,以便您可以看到包含它提供的表面的单独窗口。

    其次,您根本不需要SurfaceView。创建TextView 的子类并覆盖它的onDraw 方法。用传递给那里的Canvas 画线或其他任何东西。

    编辑:

    public class TextWithLinesView extends TextView {
        // ...
        // Constructor with Context parameter, etc.
        // ...
        @Override
        public void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            // Use the Canvas to draw whatever you'd like here
        }
    }
    

    【讨论】:

    • 你可以让 textView 放在 textView 的顶部,还是可以在一个 textView 中同时包含文本和行?
    • @AllanMacmillan 您可以在任何扩展View 的类中绘制任何您想要的内容,只需覆盖onDraw。我在答案中添加了示例代码。
    • 当我调用 onDraw 时,是否将带有所需线条/颜色等的画布传递给 TextViewWithLines?或者当我调用 onDraw 时,它应该在 onDraw 函数中运行代码。抱歉,我只是想弄清楚到底发生了什么
    • @AllanMacmillan 你根本不应该打电话给onDraw。操作系统将在适当的时候使用与绘制TextView 相同的Canvas 调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多