如何在android中的小数上对齐这些数字?

时间:2015-01-14 09:32:10

标签: java android android-layout

我的活动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>

enter image description here

但是,当我使用此代码计算数字并填充相同的文本框时,对齐方式会发生变化:

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

enter image description here

如何保持小数点上的对齐方式?

以下是我的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'
}

3 个答案:

答案 0 :(得分:2)

android:gravity="right"上使用TextView

这将排列右手边缘。

然后删除-8空格填充,现在不需要:

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

如果希望小数点对齐,您可能还需要使用固定宽度字体。

答案 1 :(得分:1)

您无需更改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));

答案 2 :(得分:0)

检查是否有效

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