0

I am facing a problem aligning the text in proper format

EX: say I am to get printout in the following way

Name                     Phone No.
Adithya                  99999999999 
Ravi                     99999999999 
Teja                     99999999999
:
:

but as the length of the String Adithya is not equal to length of Ravi we cannot give specific spacing such as

String s = Name+ " " + Phone + "\n";

here if I give so I'll get in the following way

Name                Ph
Adithya              9999999
Ravi              9999999
Tej              9999999
:
:

it will display in this way. How can I solve this?

4

3 回答 3

0

您可以使用制表符 ( \t):

String s = String.format("%s\t\t%s\n", Name, Phone);

这将在名称后输入两个选项卡,然后是电话号码。电话号码应该很好地对齐。

于 2013-03-22T17:55:03.970 回答
0

我宁愿建议你使用Table Layout(它会保证你对齐)而不是让你的代码复杂。

以下将是您的list viewROW 的布局您的编码部分将是相同的,只需切换到这个新布局

   <?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>

在此处输入图像描述

然后像使用其他布局一样将此布局绑定到您的适配器。

于 2013-03-28T05:05:54.747 回答
0

这个问题正是 aListView的设计目的。

使用 a 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;
}
于 2013-03-22T17:29:25.700 回答