2017-10-10 57 views
0

左图是我现在拥有的。正确的形象是我的目标。如何添加前导空格来格式化小数?

enter image description here

我需要整数三个空格小数位之前。如果它是0,我只需要一个0在它之前显示两个空格。这是我如何做的,但它不起作用,因为它会产生左图像。我需要它在小数点之前强制三个空格。

mAttemptOneScore.setText(String.format("%3.2f", mScoreAttemptOne)); 
    mAttemptTwoScore.setText(String.format("%3.2f", mScoreAttemptTwo)); 
    mAttemptThreeScore.setText(String.format("%3.2f", mScoreAttemptThree)); 
    mAttemptFourScore.setText(String.format("%3.2f", mScoreAttemptFour)); 
    mTotalScore.setText(String.format("%3.2f", mFinalScore)); 
+0

即使有人给你代码填充字符串,我认为你仍然可能有格式问题,特别是如果你的字体没有等宽。你看,一个空格和一个零可能不占用相同宽度的非等宽字体,实际上甚至可能没有办法用空格来对齐所有的东西。在这里进行更好的方法可能是为分数的RHS使用单独的文本视图。 –

+0

通过使用不同的文本视图不确定你的意思。 [我不是这样做的?](https://i.imgur.com/U64A1BJ.png) – Nico

+0

不,我要说的是等号的右边的所有内容都是一个单独的文本视图。然后你可以保证你想要的路线。 –

回答

1

看起来你有固定的尝试次数。 在这种情况下,构建用户界面的正确方法是使用GridLayout:https://developer.android.com/reference/android/widget/GridLayout.html

如果您仍然希望使用基于文本的格式,则有许多解决方案。

  1. 选项卡 - 根据格式化 mAttemptTwoScore.setText(String.format("On %d attempt \t\t%d * %.2f\t=%3.2f", ...));

  2. HTML格式,使用HTML构建你的UI,并使用此方法 @SuppressWarnings("deprecation") public static Spanned getSpanned(String text) { Spanned spanned; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) spanned = Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY); else spanned = Html.fromHtml(text); return spanned; } 到HTML分配给TextView的。第三方库,如https://github.com/thedathoudarya/WAGU-data-in-table-view。你应该保证使用等宽字体。

+0

谢谢你。但是我做了什么来解决它是把文本视图放在一个框架布局里,这个框架布局的固定宽度足以保存我期望的最长小数。很棒。 – Nico

+0

@尼科,不。你不能猜出,用户设备上使用了哪种字体。你不能猜测使用的字体大小。您不控制屏幕大小和分辨率。绝对不能保证如何看待你的布局。 –