我正面临以正确格式对齐文本的问题
EX: 说我要按以下方式打印出来
Name Phone No.
Adithya 99999999999
Ravi 99999999999
Teja 99999999999
:
:
但由于字符串Adithya
的长度不等于Ravi
的长度,我们无法提供特定的间距,例如
String s = Name+ " " + Phone + "\n";
如果我这样做,我将按以下方式进行
Name Ph
Adithya 9999999
Ravi 9999999
Tej 9999999
:
:
它将以这种方式显示。我该如何解决这个问题?
答案 0 :(得分:0)
这个问题正是ListView
的设计目标。
使用ListView
,您可以将名称放在左侧,将电话放在右侧或任何其他方向。您可以轻松更改颜色,文本大小,字体等。
查找ListView
的示例。易于使用的简单适配器非常适合这种实现。
你应该好好去。
我在此修改此答案是因为您在下面的评论中说明您希望格式化电子邮件和打印的电话号码列表,而不是屏幕显示。
由于以下几个原因,现在这是一个难题:
我能想到的电子邮件和常规打印输出的唯一解决方案是计算名称和电话号码列之间所需的空格字符数*并强制使用单字节字体打印,例如“Courier”等等
(*)如何计算列之间所需的空格数:选择电话号码列的行位置,即40个字符。任何特定行的姓名和电话之间所需的空格字符数为(40 - name.length())
。
您的代码将如下所示:
String text = "Phone List:";
for(i = 0; i < n; i++) {
String name = names[i];
String phone = phones[i];
int nsp = 40 - name.length();
text += "\n" + name + StringUtils.repeat(" ", nsp) + phone;
}
答案 1 :(得分:0)
您可以使用标签(\t
):
String s = String.format("%s\t\t%s\n", Name, Phone);
这将在名称后输入两个标签,然后输入电话号码。 phonenumbers应该很好地对齐。
答案 2 :(得分:0)
我建议您使用Table Layout
(它会保证您对齐),而不是让您的代码变得复杂。
以下是list view
ROW的布局
您的编码部分将是相同的,只需切换到这个新的布局
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1">
<TableRow
android:id="@+id/tblRow1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip">
<TextView
android:id="@+id/tv_Name"
android:layout_width="0dip"
android:layout_weight="3" <!--it defines how much space this view should get in row-->
android:text="Ravi"
android:layout_height="wrap_content"
android:paddingLeft="20dip"
android:textSize="14sp"
android:textColor="@android:color/black"/>
<TextView
android:id="@+id/tv_PhoneNumber"
android:layout_width="0dip"
android:layout_weight="3"
android:text="9999999999"
android:layout_height="wrap_content"
android:paddingLeft="20dip"
android:textSize="14sp"
android:textColor="@android:color/black"/>
</TableRow>
</TableLayout>
然后将此布局绑定到适配器,就像使用其他布局一样..