java - 字符串格式无法正确显示在 Android Studio 的 ListView 中

标签 java android format

我的目标是创建一个 ListView,其中包含一个单词后跟一些数字。现在,对于此列表,单词的长度因条目而异,但每个数字的宽度应完全相同。

这是所需输出的示例(在命令行中):

enter image description here

当然,对于这个问题,首先想到的就是使用 String.format 在每个单词中右填充适当数量的空格,但这样做并不能完全给出正确的输出。

像这样:

ArrayList<String> arr = new ArrayList<>();

arr.add(String.format("%-10s", "aaaaaa") + "10");
arr.add(String.format("%-10s", "aa") + "10");
arr.add(String.format("%-10s", "asdkaosds") + "10");
arr.add(String.format("%-10s", "aaaaaaaaaa") + "10");

ArrayAdapter<String> itemsAdapter = new ArrayAdapter<(this,android.R.layout.simple_list_item_1,arr);

ListView listView = findViewById(R.id.answers);

listView.setAdapter(itemsAdapter);

输出:

enter image description here

只需用星号替换空格即可显示已填充了适当数量的空格

arr.add(String.format("%-10s", "aaaaaa").replace(' ','*') + "10");
arr.add(String.format("%-10s", "aa").replace(' ','*') + "10");
arr.add(String.format("%-10s", "asdkaosds").replace(' ','*') + "10");
arr.add(String.format("%-10s", "aaaaaaaaaa").replace(' ','*') + "10");

输出:

enter image description here

唯一合乎逻辑的解释是每个字符的长度不同。

所以我的问题是:

如何解决这个问题?

最佳答案

是的,你说得对,“每个字符的长度各不相同”。

要么你必须并排使用 2 个 TextView ,正如@Pankaj Kumar 提到的那样。

但如果您不想这样做,您可以使用任何等宽字体。

示例

ArrayList<String> arr = new ArrayList<>();

    arr.add(String.format("%-10s", "aaaaaa") + "10");
    arr.add(String.format("%-10s", "aa") + "10");
    arr.add(String.format("%-10s", "asdkaosds") + "10");
    arr.add(String.format("%-10s", "aaaaaaaaaa") + "10");
    final Typeface mTypeface = Typeface.createFromAsset(getAssets(), "fonts/DroidSansMono.ttf");

    ArrayAdapter<String> itemsAdapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr){
        @NonNull
        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            TextView item = (TextView) super.getView(position,convertView,parent);

            item.setTypeface(mTypeface);

            return item;
        }
    };
    ListView listView = findViewById(R.id.answers);

    listView.setAdapter(itemsAdapter);

这是link一些等宽字体

关于java - 字符串格式无法正确显示在 Android Studio 的 ListView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331106/

相关文章:

java - 如何为线程run方法编写junit测试用例

java - 如何从(非 Activity )Java 类调用 Activity 类中定义的方法

android - Gradle 4.9 + Lombok 1.18.0 失败

android - 减少许多 Activity 的庞大代码

java - 如何反转链表 - 详细说明

java - 内存不足异常 : When reading 11GB XML using simple groovy getting memory error but when reading using plain JAVA not error

android - 如何在 MIFARE Ultralight EV1 标签上设置和取消设置密码?

android - 调用 notifyItemMoved() 后 RecyclerView 无法解释的强制向下滚动

android - 如何在 Java 中将 double 舍入到小数点后两位?

ruby-on-rails-3 - 我可以在 Rails3 中使用 'responds-to format' 进行通配符吗?