【问题标题】:Android TextView Multiline FormattingAndroid TextView 多行格式
【发布时间】:2016-04-19 22:49:02
【问题描述】:

我的 logcat 中的这两行是用 String.fortmat() 格式化的字符串

04-19 13:57:44.918 26962-26962/ts.kiosk.app.checkout E/java.lang.StackTraceElement: "Tendered Amount:                    Rs.     0.00"
04-19 13:57:44.919 26962-26962/ts.kiosk.app.checkout E/java.lang.StackTraceElement: "Change Due:                         Rs.     0.00"

您可以看到两行的长度完全相同,但在文本视图中,字符串与它们的格式不完全相同:

String.format("%-25s Rs. %2$8.2f", "Tendered Amount:", formatCentsToCurrency(checkoutBasket.tenderedAmount));

String.format("%-25s Rs. %2$8.2f", "Change Due:", formatCentsToCurrency(checkoutBasket.changeDue));

这就是它在 TextView 中的对齐方式:

"Tendered Amount:                       Rs.     0.00"
"Change Due:                         Rs.     0.00"

我在想我的 TextView 不知何故弄乱了格式:

                       <TextView
                        android:id="@+id/text_receipt"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        style="@style/popUpReceiptText"
                      android:text="@string/popup_detail_description_default"
                        android:gravity="left"
                        android:layout_gravity="center_horizontal"/>

【问题讨论】:

  • 你能添加截图说明问题所在吗?从您的描述中很难看出
  • 我添加了 Text 以显示它在 TextView 中是如何错位的
  • 你试过使用标签吗? \t
  • 我添加了屏幕截图,不,我不能使用标签

标签: android textview string-formatting multiline


【解决方案1】:

对我来说正确的答案,其实很简单,我早该发现的:

我只是添加了:

android:typeface="monospace"

到我的文本视图

【讨论】:

  • 这绝对是正确的答案。我也只是浪费了一个小时试图弄清楚这一点,我从没想过字体。
【解决方案2】:

Android 设备默认不使用等宽字体,因此即使控制间距,在同一个 TextView 中也很难左右对齐。

您可以通过更改布局来解决此问题。一个想法是每行实现 2 个 TextView,一个在 alignParentLeft=true 中,另一个在 RelativeLayout 中使用 alignParentRight=true

【讨论】:

  • hmmm ,好的,但是因为我在每行中有不同数量的令牌(可以超过 2 个,甚至 3 个或 4 个),所以它不起作用。我认为您可以在画布上绘制文本时指定等宽字体?
  • 您可以使用 Calligraphy (github.com/chrisjenx/Calligraphy) 来渲染 3rd 方字体。但最简单的方法是使用 4 个 TextView 并切换 GONEVISIBLE
  • @Some Noob Student:谢谢,但考虑到我的问题的参数,我有一个字符串格式的标记数组,这不是最简单的。
【解决方案3】:

您可以尝试使用 TableLayout 而不是使用 Textview,它会自动将您的值排列在行和列中。

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多