java - 安卓编程: TextView isn't displaying full string

标签 java android

我有一个 TextView,我正在尝试使其显示基于 2d 字符的网格。在我的 Java 代码中,我创建了一个二维数组,我将该数组填充为字符串,并将每个条目一个接一个地附加,当到达数组行的末尾时,我还附加一个换行符 (.n)。通过这种方式,我然后获取充满数组中所有条目的大长单数字符串(按\n 的顺序)并执行 setText(string) 。这样,TextView 应该在显示屏上显示二维网格。它大致是这样的:顶行和底行都很好,但中间的每一行在该行的结束字符和左侧的某个位置(大约 13 个字符)之间都缺少空格。

以下是创建数组、用字符填充数组以及将该数组转换为长字符串的代码 fragment :

    for(int row = 0; row < 22; row++){
        for(int column = 0; column < 22; column++){
            if(row == 0 || row == 21){
                playField[row][column] = "#";
            }else if(row > 0 && row < 21 ){
                if(column == 0 || column == 21){
                    playField[row][column] = "#";
                }else{
                    playField[row][column] = " ";
                }                   
            }
        }

现在,将数组转换为字符串:

    temp = new String();
    for(int i = 0; i < 22; i++){
        for(int j = 0; j < 22; j++){
            temp+=playField[i][j];
        }
        temp+="\n";
    }return temp;

这个字符串是我使用 text.setText(temp) 的,它可以工作,但它是这样的:# 在第 1 列中,大约 10 个空格(按预期),然后在第 13 列左右有另一个 #,以及然后是下一行。顶行全部是 22 个 # 符号,底行全部是 22 个 # 符号。

我在 xml 中设置了 textView:

    <TextView
    android:id="@+id/grid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"/>

最佳答案

我认为问题是你没有声明你的 TextView 使用等宽字体,所以所有的空格都在那里,但它们没有 # 符号那么宽。

您可以像这样指定 TextView 的字体:

android:typeface="monospace"

关于java - 安卓编程: TextView isn't displaying full string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709160/

相关文章:

java - 如何在Java中实现条码扫描器?

java - 在 java 中序列化 Float 以供 C++ 应用程序读取的最佳方法?

java - 从文件加载大 HashMap<String, TreeMap> 会给出 java.lang.OutOfMemoryError(超出 GC 开销限制)

android - 收到多条推送通知

android - 打开应用程序时如何读取Android剪贴板(文本)?

android - 当应用程序处于后台时,Firebase SDK 不会打开启动器 Activity

java - 具有相同键的多个条目不可变映射错误

Java:如何访问内部类自己的类型

android - 无法让模拟器反射(reflect)我对 HelloAndroid 应用所做的微小更改

android - 谷歌 openID 登录集成