2017-10-10 13 views
0

왼쪽 이미지는 내가 지금 가지고있는 이미지입니다. 오른쪽 이미지가 내가 원하는거야.10 진수를 포맷하기위한 선행 공백을 추가하는 방법은 무엇입니까?

enter image description here

본인은 소수점 전에 정수에 대한 세 가지 공간이 필요합니다. 0 인 경우 앞에 0을 두 칸 표시해야합니다. 이것이 내가하는 방법이지만 왼쪽 이미지를 생성하기 때문에 작동하지 않습니다. 10 진수 앞에 세 칸을 넣어야합니다.

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

누군가 문자열을 채우는 코드를 제공하더라도 글꼴이 고정 폭 글꼴이 아닌 경우 특히 서식 문제가있을 수 있다고 생각합니다. 공백과 0은 비 고정 폭 글꼴에서 같은 너비를 차지하지 않을 수도 있으며 사실 공백을 사용하여 모든 것을 정렬하는 방법조차 존재하지 않을 수도 있습니다. 여기서 진행하는 더 좋은 방법은 점수의 RHS에 대해 별도의 텍스트보기를 사용하는 것입니다. –

+0

다른 텍스트보기를 사용하여 무슨 뜻인지 확실하지 않습니다. [내가하지 않겠습니까?] – Nico

+0

아니요. 등호 오른쪽에있는 모든 것이 별도의 텍스트보기임을 말하고 있습니다. 그런 다음 원하는 정렬을 보장 할 수 있습니다. –

답변

1

고정 된 시도 횟수가있는 것 같습니다. 그런 경우 적절한 UI 작성 방법은 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를 구성하고 텍스트 뷰에 HTML을 할당하려면이 방법 @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; } 를 사용합니다.

  3. https://github.com/thedathoudarya/WAGU-data-in-table-view과 같은 타사 라이브러리. 고정 폭 글꼴을 사용해야합니다.

+0

감사합니다. 하지만 그것을 해결하기 위해 무엇을했는지는 예상 한 가장 긴 십진수를 유지하기에 충분히 큰 고정 너비의 프레임 레이아웃 안에 텍스트보기를 배치하는 것입니다. 훌륭하게 작동합니다. – Nico

+0

@Nico, nope. 사용자의 장치에서 어떤 글꼴이 사용되는지 추측 할 수 없습니다. 당신은 사용 된 글꼴 크기를 짐작할 수 없습니다. 화면 크기와 해상도를 제어하지 않습니다. 레이아웃이 어떻게 보일지에 대해서는 절대 보장 할 수 없습니다. –