[Java] ¿Por qué String.format () no funciona en Android TextView?


Answers

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

    }
Question

Estoy tratando de formatear el texto en un Android TextView. Este es el código que probé en una consola Java:

System.out.println(String.format("%-7s 56", "S"));
System.out.println(String.format("%-7s 56", "A(102)"));

El resultado es el esperado, mi texto está alineado a la izquierda:

S       56
A(102)  56

No, intento el mismo código en Android TextView:

mTextView.setText(String.format("%-7s 56\n", "S"));
mTextView.append(String.format("%-7s 56", "A(102)"));

Y este es el resultado:

Como puede ver, la salida no es la esperada, el texto no está alineado. ¿Que estoy haciendo mal? Hay alguna otra manera de hacer esto?