我正在尝试在Android TextView上格式化文本。这是我在Java控制台中尝试的代码:
System.out.println(String.format("%-7s 56", "S"));
System.out.println(String.format("%-7s 56", "A(102)"));
输出是预期的,我的文字左对齐:
S 56
A(102) 56
不,我在Android TextView上尝试相同的代码:
mTextView.setText(String.format("%-7s 56\n", "S"));
mTextView.append(String.format("%-7s 56", "A(102)"));
这就是结果:
正如您所看到的,输出不是预期的,文本未对齐。我做错了什么?还有其他办法吗?
答案 0 :(得分:8)
问题是我没有使用Monospaced字体。
等宽字体,也称为固定间距,固定宽度或 非比例字体,是一种字母和字符各自的字体 占用相同数量的水平空间
所以我在写入TextView之前只添加了这一行:
mTextView.setTypeface(Typeface.MONOSPACE);
答案 1 :(得分:0)
// I Think You Have To Achieve this in this way
// XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/txtCal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtCalValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
// Activity
TextView txtCal;
TextView txtCalValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtCal = (TextView) findViewById(R.id.txtCal);
txtCalValue = (TextView) findViewById(R.id.txtCalValue);
txtCal.setText("S\nA(102)");
txtCalValue.setText("56\n56");
}