Android TextView多行格式

时间:2016-04-19 22:49:03

标签: android textview string-formatting multiline

我的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"/>

actual TextEdit

3 个答案:

答案 0 :(得分:1)

对我来说,正确答案,实际上我应该早些发现这么简单:

我简单地补充道:

android:typeface="monospace"

到我的TextView

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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