使用setText()时Android TextView中缺少空格

时间:2016-02-11 06:10:19

标签: android ascii textview

我正在编写一个从ASCII时钟服务器获取时间并将其显示在屏幕上的应用程序。单击按钮时,AsyncTask将在后台运行以获取时间。 onProgressUpdate()将不断更新时间 - 参数s是存储ASCII时间的地方:

protected void onProgressUpdate(String... s) {
                // I had to use a StringBuilder here because otherwise
                // the real ASCII art won't be printed out
                StringBuilder builder = new StringBuilder();
                for(String str : s){
                    builder.append(str);
                }
                String tmp = builder.toString();
                Log.i(TAG, tmp);
                textView.setText("Server returned time: \n" + tmp);
            }

记录的字符串看起来很好:

enter image description here

但是屏幕上显示的输出缺少很多空格:

enter image description here

不确定为什么会发生这种情况,因为传递给logcat的相同字符串也在TextView中设置。

3 个答案:

答案 0 :(得分:0)

尝试在TextView中使用等宽字体。默认的可变宽度字体不会使空格的宽度与$。相同。

在TextView的XML中,添加以下属性:

Z= magic(4)

Z =

 16     2     3    13
  5    11    10     8
  9     7     6    12
  4    14    15     1

>> W= sign(Z)== -1

W =

 0     0     0     0
 0     0     0     0
 0     0     0     0
 0     0     0     0

>> xlswrite('sample.xlsx',W)

答案 1 :(得分:0)

你的问题是它将你的内部空间缩小了一半,

例如 - 8到4

因为Java字符串将每个char视为16位的unicode 你需要编码8位来显示相同​​的输出。

或试试这个

textView.setText(temp.replace(" ","  "));

尝试使用服务器

上的& nbsp; 替换空格

并将其用于setText

  textView.setText(Html.fromHtml(temp));

答案 2 :(得分:0)

我明白了。 setTypeface()可以解决问题。