如何正确格式化Android Toast内的文本

时间:2015-03-29 13:08:39

标签: android

所以我知道我需要在Toast中显示。

以下是我目前创建toast的代码:

String toastFormat = "%-20s %-15s%n";
        ArrayList<String> strings = new ArrayList<>();
        strings.add(String.format(toastFormat, "Kultuur", "100 tera mass, g"));
        strings.add(String.format(toastFormat, "Talinisu", "min. 36"));
        strings.add(String.format(toastFormat, "Suvinisu", "min. 35"));
        strings.add(String.format(toastFormat, "Söödaoder", "min. 38"));

        StringBuilder builder = new StringBuilder();
        for(String s : strings) {
            builder.append(s);
        }

        Toast.makeText(getApplicationContext(), builder, Toast.LENGTH_LONG).show();

以下是它的样子:

enter image description here

正如您所看到的,第二列中的最后一个元素往往比它们应该缩进得更远。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

  

我在这里做错了什么?

您无法控制用于Toast的字体,通常Toast将以比例字体显示(即不是等宽字体)。

由于Toast接受CharSequence,因此欢迎您为自己的Toast尝试自定义跨度,例如those from Chris Renke。但是,我不知道哪个流程负责呈现Toast内容,如果这不是您的流程,那么您的自定义跨度将无效。

答案 1 :(得分:2)

如果检查第二列的格式,它与frist列的距离始终相同。它看起来像无格式文本,因为第一列上的字符串具有不同的字符数。作为一种解决方法,在第一列中提供与第一列中最大字符串和该行字符串之间的字符数一样多的空格。例如:

strings.add(String.format(toastFormat, "Kultuur", "  100 tera mass, g"));
strings.add(String.format(toastFormat, "Talinisu", "  min. 36"));
strings.add(String.format(toastFormat, "Suvinisu", " min. 35"));
strings.add(String.format(toastFormat, "Söödaoder", "min. 38"));

尝试更改指针,直到获得所需的方面。它很难看,但很有效。