首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在android中对齐文本视图中的冒号?

如何在android中对齐文本视图中的冒号?
EN

Stack Overflow用户
提问于 2021-07-26 06:05:20
回答 3查看 270关注 0票数 0

我试图在android应用程序的文本视图上显示字符串,我有以下字符串

代码语言:javascript
运行
复制
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);

但显示的垂直错对冒号.Why?

所以我用可伸缩的绳子把结肠放在中间

代码语言:javascript
运行
复制
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 );

当前的输出是:

代码语言:javascript
运行
复制
Fruityellow:Mango
Fruitred:Apple
Fruitgreen:guava
Fruitpink:Pomegranate

预期输出为:

代码语言:javascript
运行
复制
Fruityellow     : Mango
Fruitred        : Apple
Fruitgreen      : guava
Fruitpink       : Pomegranate

如果我只打印span_colon,它就会出现在屏幕的中央。

如何在文本视图中获得屏幕中心的冒号?冒号不需要位于中间,而应该垂直对齐。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-26 08:17:30

您使用空间的方式无法工作,因为用于TextView的字体对于每个字符都有不同的宽度和大小,包括空格本身。如果您可以将android:fontFamily="monospace"添加到xml中,那么它将显示您所期望的空间,但可能不是您期望的TextView字体。

票数 0
EN

Stack Overflow用户

发布于 2021-07-26 08:59:12

这不能仅使用一个TextView实现,因为文本大小可能独立变化。您可能需要一个附加的TextView,包装在ConstraintLayoutRelativeLayoutLinearLayout中,并应用必要的约束。

技巧(但可能是最糟糕的技巧)是将冒号作为前缀附加到水果名称中,而不是作为水果标签的后缀。

您可以使用SpannableStringBuilder来实现这一点。

代码语言:javascript
运行
复制
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部件- UI

代码语言:javascript
运行
复制
<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所需的空间。

票数 0
EN

Stack Overflow用户

发布于 2021-07-26 10:12:18

如果你想成为那样的人(只要一个),这在文本视图中当然是没有意义的,因为你要定制他。通常,这种方法有三种逻辑模式,每种模式都可以根据您的选择构建。

  • 重新格式化您的文本以避免表
  • 使用WebView来呈现HTML表
  • 使用本地小部件和容器(例如,TableLayout)来表示表
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68525162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档