【问题标题】:Android trouble with newlineAndroid换行问题
【发布时间】:2014-02-08 12:14:02
【问题描述】:

我在 textview 中遇到换行问题(我从 assets txt 文件中读取文本)。见截图:

我的代码:

 TextView txt = (TextView) findViewById(R.id.txt);

    AssetManager assetManager = getAssets();

    InputStream input;
    try {
        input = assetManager.open("book.txt");

         int size = input.available();
         byte[] buffer = new byte[size];
         input.read(buffer);
         input.close();

         String text = new String(buffer);
         txt.setText(text);
    } catch (IOException e) {

    }

book.txt的几行:

Мим должен молчать Автор pinskiy

--Мама-мама! Смотри! Грустный клоун! – бесцеремонно показывала на него пальцем девочка лет восьми。

-- Маш, это не клоун – это мим, - не сбавляла скорости мама, пытаясь успеть на трамвай。 Девочка, не успевая за мамой, болталась у нее на руке, но продолжала гнуть свою линию: «А почему клоун грустный, маа?» - «Спроси у него сама»。

【问题讨论】:

  • 也许可以在网上提供几行 book.txt,这样我们就可以看到里面有什么。当只需要换行时,每个新行都可以是回车 + 换行(Windows 样式)。您看到的有趣字符可能是不需要的回车(字符 0x0D 或十进制的 13)。
  • 在记事本中,当您在底部执行File-Save As时,您可以将编码设置为UTF-8。如果您已经将其保存为 UTF-8,那就是另外一回事了。 Android 使用 UTF-8 作为默认值。
  • 看起来像 \r\n 换行符。您只需要\n。但是,将文件作为文本发布并不会显示 book.txt 中的实际字符。
  • 你试过我在这个问题中提供的解决方案吗??还是你自己解决了?。

标签: android newline textview


【解决方案1】:

你可以试试这个:

try {
BufferedReader reader = new BufferedReader(
    new InputStreamReader(getAssets().open("book.txt"),"UTF-8"));

// do reading, usually loop until end of file reading  
String mLine = reader.readLine();
while (mLine != null) {
   txt.append(mline);
   mLine = reader.readLine(); 
}

reader.close();
} catch (IOException e) {
//log the exception
}

【讨论】:

  • 查看我的编辑。在 inputStreamReader() 中提及 UTF-8。试一次。
【解决方案2】:

谢谢大家!我已将文件从 txt 转换为 html,现在我的代码如下所示:

 AssetManager assetManager = getAssets();
     InputStream inputStream = assetManager.open("book.html");
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     int i;
     try {
     i = inputStream.read();
      while (i != -1)
      {
       byteArrayOutputStream.write(i);
       i = inputStream.read();
      }
      inputStream.close();
      } catch (IOException e) {

     }

      TextView txt = (TextView) findViewById(R.id.txt);   
      txt.setText(Html.fromHtml(byteArrayOutputStream.toString()));

【讨论】:

    【解决方案3】:

    尝试一次。对你有帮助吗?

    txt.setText(Html.fromHtml(text));
    

    或者你可以用“\n”替换那个字符,如果这不起作用,现在可以再次使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多