【问题标题】:Draw bar chart on TextView background在 TextView 背景上绘制条形图
【发布时间】:2019-08-11 12:55:39
【问题描述】:

我有一个 ListView,其中包含一个 TextView 作为列表项中的一项。自定义适配器扩展了 ArrayAdapter。 TextView 将包含名称。我还想在TextView背景的文字下画一个简单的条形图。它将代表每个销售人员的月销售额。所以它将有 12 个垂直条(每个月一个),按比例跨越 TextView 的宽度(每个条是 TextView 宽度的十二分之一)。

这样做的正确方法是什么?我对 Java 和 Android 比较陌生;但是在其他平台上拥有多年的编程经验,所以您知道我希望获得的详细程度。例如。我将在哪里实现绘图代码(在适配器的 getView() 中?)以及如何在 TextView 的背景上绘制简单的条?谢谢。

【问题讨论】:

  • 这是不可能的,因为文本视图就是这样,文本。

标签: android android-layout textview draw


【解决方案1】:

您有几个选择,可以在画布上绘制自定义条。然后将你的文本视图放在它上面。

https://developer.android.com/training/custom-views/custom-drawing

或者您可以使用 MpAndroidChart 之类的工具为您制作条形图,然后再次将您的文本视图放在上面。

https://github.com/PhilJay/MPAndroidChart

更新:

查看此codelab 以获取自定义绘图。

我建议在更强大的列表RecyclerView 中执行类似的操作,当您将视图绑定到回收站视图时,您将填充数据。这将为您提供更多运行时灵活性和效率来处理此自定义场景。

您可以使用几种不同的布局类型来堆叠视图,但在 FrameLayout 中重叠视图是最简单的

<Whatever Your List Item Parent Layout Is

   <FrameLayout
          android:id="@+id/myListFram"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

     <ImageView
            android:id="@+id/my_image_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

     <TextView
            android:id="@+id/my_text_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

   </FrameLayout>
</ Close Parent>

检查一下: https://academy.realm.io/posts/360-andev-2017-joshua-lamson-custom-drawing-canvas/

【讨论】:

  • 嗨,理查德。谢谢。我找到了关于自定义绘图的开发人员文档,这似乎就是我绘制 12 个简单条所需的全部内容。但是,我仍然对如何“将 TextView 放在画布顶部的 ListView 中”感到困惑。我是否将画布视图添加到我的 List_item.xml 并以某种方式将其放置在我的 TextView 后面?然后在getView()方法中画在画布上?要不然是啥?谢谢。
  • 试着把它分解成几个步骤,创建一个显示文本的回收器视图,重叠一些视图,绘制。
  • 另外,如果这有帮助,请接受它作为答案。谢谢!
  • 查看我更新的链接。我认为这会有所帮助。
  • 非常感谢!刚才快速浏览了一下,它看起来像是我需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 2023-03-10
  • 2016-08-05
相关资源
最近更新 更多