【问题标题】:Android format properly spacesAndroid格式正确空格
【发布时间】:2017-09-21 11:06:33
【问题描述】:

我有一个 ListView,我使用 toString 在 ListView 中显示我的对象。

private String displayToUI() {
    DecimalFormat format = new DecimalFormat();
    format.setDecimalSeparatorAlwaysShown(false); //if overall = "X.0", the format will print "X"
    switch (FORMAT_TYPE) {
        case 0: // i.e "Guy - 5 | Host | Attending"
            String membership;
            String attending;
            if (this._playerishost == 1)
                membership = "Host";
            else
                membership = "Guest";
            if (this._playerisattending == 1)
                attending = "Attending";
            else
                attending = "Not Attending";
            return this._playername + " - " + format.format(this._playeroverall) + " | " + membership + " | " + attending;
        case 1: // i.e "Guy - 5"
            return this._playername + " - " + format.format(this._playeroverall);
    }
    return "0";
}

@Override
public String toString() {
    return displayToUI();
}

如果 FORMAT_TYPE=0 ,我想使用格式,正确显示对象,所以每一列都会在他的位置,函数会像表格一样显示对象

这是现在的输出:

https://i.stack.imgur.com/HvvNH.png

编辑:

我使用了 String.format(@Pynnie 的回答),现在的代码行是:

                return String.format("%-20s %-4s | %-5s | %s", this._playername, format.format(this._playeroverall), membership, attending);

但输出不合适,如下图所示:

https://i.stack.imgur.com/BEn27.png

还有,我的列表视图适配器代码:

public void editListView() {
    ArrayAdapter<Player> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, DBHandler.getNameListGeneral());
    lv = (ListView) findViewById(R.id.db_list_view);
    lv.setAdapter(arrayAdapter);
    registerForContextMenu(lv);
}

【问题讨论】:

  • 将您的 xml 和您的适配器代码放在这里,以便我们了解您在做什么。
  • @Rob 完成!编辑了我上面的帖子

标签: android listview format string.format


【解决方案1】:

我认为最简单的解决方案是使用 String.format() 正确格式化您的字符串。正确的使用方法已经记录在案here

【讨论】:

  • 我正在尝试使用String.format(),但仍然不适合,我编辑了问题并添加了图片
  • 传递 "%-10s %-6s | %-10s | %s" 作为 String.format() 中的第一个参数应该可以解决问题。第二个和第三个间距一定要大一些
【解决方案2】:

使用等宽字体,即“i”与 e.g. 等宽的字体一个“米”。这与 pynnies 答案一起应该可以工作

【讨论】:

  • 很高兴听到这个消息:)
【解决方案3】:

您可以尝试修改列表项的布局 xml,而不是尝试格式化字符串。

使用具有三个文本视图和水平方向的 LinearLayout。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多