Как выровнять эти числа в десятичной форме в Android?

Моя активность fullscreen.xml имеет этот отрывок, который работает точно так, как я хочу, создавая вывод с выровненными десятичными знаками:

<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal|top" android:gravity="center"> <TextView android:layout_width="140dp" android:layout_height="24dp" android:text="-0.123" android:id="@+id/acc_x" android:layout_gravity="center_horizontal|top" android:textColor="#ffffff" android:gravity="center_vertical|end" android:layout_margin="0dp" style="@style/Base.TextAppearance.AppCompat.Large" /> <TextView android:layout_width="140dp" android:layout_height="24dp" android:text="0.123" android:id="@+id/acc_y" android:layout_gravity="center_horizontal|top" android:textColor="#ffffff" android:gravity="center_vertical|end" android:layout_margin="0dp" style="@style/Base.TextAppearance.AppCompat.Large" /> <TextView android:layout_width="140dp" android:layout_height="24dp" android:text="99.123" android:id="@+id/acc_z" android:layout_gravity="center_horizontal|top" android:textColor="#ffffff" android:gravity="center_vertical|end" android:layout_margin="0dp" style="@style/Base.TextAppearance.AppCompat.Large" /> <TextView android:layout_width="140dp" android:layout_height="24dp" android:text="99.123" android:id="@+id/acc_T" android:layout_gravity="center_horizontal|top" android:textColor="#ffffff" android:gravity="center_vertical|end" android:layout_margin="0dp" style="@style/Base.TextAppearance.AppCompat.Large" /> </LinearLayout> 

Введите описание изображения здесь

Но когда я вычисляю числа и заполняю те же текстовые поля этим кодом, выравнивание изменяется:

  x = -0.123f; text = (TextView)findViewById(R.id.acc_x); text.setText(String.format("%-8.3f",x)); y = 0.123f; text = (TextView)findViewById(R.id.acc_y); text.setText(String.format("%-8.3f",y)); z = 99.123f; text = (TextView)findViewById(R.id.acc_z); text.setText(String.format("%-8.3f",z)); T = 0; text = (TextView)findViewById(R.id.acc_T); text.setText(String.format("%-8.3f",T)); 

Введите описание изображения здесь

Что я могу сделать, чтобы выравнивание по десятичной точке было запланировано?

Вот мой build.gradle, если это имеет значение:

 apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.example.app001" minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:support-v4:21.0.3' } 

Вам не нужно ничего менять в вашем layout.xml. Я запустил этот фрагмент кода с изменением форматирования строки, и проблема исчезла.

  x = -0.123f; text = (TextView)findViewById(R.id.acc_x); text.setText(String.format("%.3f",x)); y = 0.123f; text = (TextView)findViewById(R.id.acc_y); text.setText(String.format("%.3f",y)); z = 99.123f; text = (TextView)findViewById(R.id.acc_z); text.setText(String.format("%.3f",z)); T = 0; text = (TextView)findViewById(R.id.acc_T); text.setText(String.format("%.3f",T)); 

Используйте android:gravity="right" на вашем TextView .

Это выровнят правый край.

Затем отбросьте пробел -8 , который не нужен сейчас:

 text.setText(String.format("%.3f",y)); 

Вам также может понадобиться использовать шрифт с фиксированной шириной, если вы хотите, чтобы десятичная точка выстроилась в линию.

Проверьте, работает ли это

 x = -0.123f; text = (TextView)findViewById(R.id.acc_x); text.setText(String.format("%-8.3f",x)); text.setTextAppearance(context, android.R.Base.TextAppearance.AppCompat.Large); y = 0.123f; text = (TextView)findViewById(R.id.acc_y); text.setText(String.format("%-8.3f",y)); text.setTextAppearance(context, android.R.Base.TextAppearance.AppCompat.Large z = 99.123f; text = (TextView)findViewById(R.id.acc_z); text.setText(String.format("%-8.3f",z)); text.setTextAppearance(context, android.R.Base.TextAppearance.AppCompat.Large T = 0; text = (TextView)findViewById(R.id.acc_T); text.setText(String.format("%-8.3f",T)); text.setTextAppearance(context, android.R.Base.TextAppearance.AppCompat.Large