[英]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
包裹在ConstraintLayout
或RelativeLayout
或LinearLayout
並應用必要的約束。
技巧(但可能是最糟糕的技巧)是將冒號作為水果名稱的前綴而不是作為水果標簽的后綴。
您可以使用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
屬性來設置label
和description
所需的空間。
如果您想成為那樣(只需要一個),那么在文本視圖中當然沒有意義,因為您要自定義他。 通常,此方法有 3 種邏輯模式,您可以根據自己的選擇構建每種模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.