Android 正确格式化空格
Android format properly spaces
我有一个 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 ,我想使用格式来正确显示对象,所以每一列都会在他的位置,函数会将对象显示为 table
这是现在的输出:
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,而不是尝试格式化字符串。
使用具有三个文本视图和水平方向的 LinearLayout。
我认为最简单的解决方案是使用 String.format()
正确格式化您的字符串。已经记录了正确的使用方法 here
使用等宽字体,即 "i" 的宽度与例如一个 "m"。这与 pynnies 答案一起应该有效
我有一个 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 ,我想使用格式来正确显示对象,所以每一列都会在他的位置,函数会将对象显示为 table
这是现在的输出:
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,而不是尝试格式化字符串。
使用具有三个文本视图和水平方向的 LinearLayout。
我认为最简单的解决方案是使用 String.format()
正确格式化您的字符串。已经记录了正确的使用方法 here
使用等宽字体,即 "i" 的宽度与例如一个 "m"。这与 pynnies 答案一起应该有效