3

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)"));

そして、これは結果です:

ここに画像の説明を入力

ご覧のとおり、出力は期待どおりではなく、テキストが配置されていません。私が間違っていることは何ですか?これを行う他の方法はありますか?

4

2 に答える 2

10

問題は、等幅フォントを使用していなかったことです。

固定ピッチ、固定幅、または非プロポーショナル フォントとも呼ばれる等幅フォントは、文字と文字がそれぞれ同じ量の水平スペースを占めるフォントです。

したがって、TextView に書き込む前に次の行を追加しただけです。

mTextView.setTypeface(Typeface.MONOSPACE);
于 2013-09-07T23:35:40.630 に答える
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");

    }
于 2013-09-10T04:35:49.267 に答える