如何在 android 中将这些数字对齐到小数点?
How do I align these numbers on the decimal in android?
我的 activity 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'
}
检查这是否有效
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
在你的 TextView
上使用 android:gravity="right"
。
这将对齐右手边。
然后删除 -8
space 填充,现在不需要:
text.setText(String.format("%.3f",y));
如果您希望小数点对齐,您可能还需要使用固定宽度的字体。
您无需更改 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));
我的 activity 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'
}
检查这是否有效
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
在你的 TextView
上使用 android:gravity="right"
。
这将对齐右手边。
然后删除 -8
space 填充,现在不需要:
text.setText(String.format("%.3f",y));
如果您希望小数点对齐,您可能还需要使用固定宽度的字体。
您无需更改 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));