2016-04-19 3 views
1

Эти две строки из моего LogCat являются строками, которые были отформатированы с String.fortmat()Android TextView Multiline Форматирование

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 Мессинг вверх somewhow форматирования:

     <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

+0

Вы можете добавить скриншот того, что проблемы является? С вашего описания немного сложно сказать –

+0

Я добавил текст, чтобы показать, как он смещен в TextView. – Mike6679

+0

Пробовали ли вы использовать вкладки? '\ t' –

ответ

1

Для меня правильный ответ, и на самом деле так просто я обнаружил ранее:

Я просто добавил:

android:typeface="monospace" 

моему TextView

+0

Это абсолютно правильный ответ. Я просто потратил впустую час, пытаясь понять это тоже, я никогда не думал о шрифте. –

0

Android устройство не используют MONOSPACE шрифтов по умолчанию, так что даже с регулируемым шагом, будет трудно выровнять влево и прямо в том же TextView.

Вы можете решить эту проблему, изменив макет. Идея будет заключаться в реализации 2 TextViews для каждой строки, одна с alignParentLeft=true, а другая с alignParentRight=true в пределах RelativeLayout.

+0

hmmm, ok, но не будет работать, поскольку у меня есть различное количество токенов в каждой строке (может быть больше 2 и даже 3 или 4). Думаю, вы можете указать моноширинный шрифт при рисовании текста на холсте? – Mike6679

+0

Вы можете использовать каллиграфию (https://github.com/chrisjenx/Calligraphy) для рендеринга сторонних шрифтов. Но самый простой способ - использовать 4 TextViews и переключить «GONE» или «VISIBLE». –

+0

@ Some Noob Student: Спасибо, но его не хватает вниз, с учетом параметров моего вопроса, в котором у меня есть массив форматированных жетонов String. – Mike6679

0

Вместо использования Textview вы можете попробовать использовать TableLayout, который будет автоматически присваивать ваши значения в строках и столбцах.

Смежные вопросы