簡體   English   中英

如何在android的textview中對齊冒號?

[英]How to align colons in a textview in android?

我正在嘗試在 android 應用程序中的 textview 上顯示字符串我有以下字符串

String Fruityellow = " Mango" ;
String Fruitred = " Apple" ;
String Fruitgreen = " Guava" ;
String Fruitpink = " Pomegranate" ;

So i append them and print them on textview
output_display = "Fruityellow     :" + Fruityellow + "\r\n" + 
         "Fruitred        :" + Fruitred + "\r\n" +
         "Fruitgreen      :" + Fruitgreen + "\r\n" +
         "Fruitpink       :" + Fruitpink + "\r\n" );

text_view.settext(output);

但顯示屏顯示垂直未對齊的冒號。為什么?

所以我使用可跨越的字符串將冒號保持在中心

SpannableString span_colon      = new SpannableString(":");
span_colon.setSpan((new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER)), 0, span_colon.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);

spanned total_display = (Spanned)TextUtils.concat("Fruityellow",span_colon,Fruityellow,
"\r\nFruitred",span_colon,Fruitred,
"\r\nFruitgreen",span_color,Fruitgreen,
"\r\nFruitpink",span_color,Fruitpink);

 text_view.settext(total_display );

當前輸出為:

Fruityellow:Mango
Fruitred:Apple
Fruitgreen:guava
Fruitpink:Pomegranate

預期輸出是:

Fruityellow     : Mango
Fruitred        : Apple
Fruitgreen      : guava
Fruitpink       : Pomegranate

如果我只是打印 span_colon 它正確地出現在屏幕中央

如何在 textview 的屏幕中心獲得冒號? 冒號不需要居中,但應該垂直對齊。

您使用空間的方式不起作用,因為用於 TextView 的字體對於每個字符具有不同的寬度和大小,包括空間本身。 如果您可以將android:fontFamily="monospace"到 xml,那么它會按您的預期顯示空間,但也許它不是您期望的 TextView 字體。

這不能僅使用一個TextView來實現,因為文本大小可能會獨立變化。 您可能需要一個附加的TextView包裹在ConstraintLayoutRelativeLayoutLinearLayout並應用必要的約束。

技巧(但可能是最糟糕的技巧)是將冒號作為水果名稱的前綴而不是作為水果標簽的后綴。

您可以使用SpannableStringBuilder來實現這一點。

val label  = SpannableStringBuilder()
label.append("\nFruit Yellow ")
label.append("\nFruit Red ")
label.append("\nFruit Green ")

val des = SpannableStringBuilder()
des.append(": Mango\n")
des.append(": Apple\n")
des.append(": Guava\n")

binder.msgViewLabel.text = label.toString()
binder.msgViewDes.text = des.toString()

XML 部分 - 用戶界面

<LinearLayout
   android:id = "@+id/container_layout"
   android:layout_width = "match_parent"
   android:layout_height = "wrap_content"
   android:orientation = "horizontal"
   android:weightSum = "1">

  <androidx.appcompat.widget.AppCompatTextView
     android:id = "@+id/msg_view_label"
     android:layout_width = "0dp"
     android:layout_height = "wrap_content"
     android:layout_weight = "0.5"
     android:textColor = "@android:color/holo_green_dark"/>

  <androidx.appcompat.widget.AppCompatTextView
     android:id = "@+id/msg_view_des"
     android:layout_width = "0dp"
     android:layout_height = "wrap_content"
     android:layout_weight = "0.5"
     android:textColor = "@android:color/holo_green_dark"/>
</LinearLayout>

輸出

在此處輸入圖片說明

注意:您可以調整layout_weight屬性來設置labeldescription所需的空間。

如果您想成為那樣(只需要一個),那么在文本視圖中當然沒有意義,因為您要自定義他。 通常,此方法有 3 種邏輯模式,您可以根據自己的選擇構建每種模式。

  • 重新格式化文本以避免表格
  • 使用 WebView 呈現您的 HTML 表格
  • 為您的表格使用本機小部件和容器(例如 TableLayout)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM