2014-01-19 3 views
2

У меня проблемы с новой строкой в ​​textview (я читаю текст из файла txt активов). Смотрите скриншот:Проблема с Android с новой строкой

enter image description here

Мой код:

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:

Мим должен молчать Автор Пинский

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

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

+0

Может быть, сделать несколько строк book.txt доступны в Интернете, чтобы мы могли увидеть, что там. Каждая новая строка может быть возвратом Carraige Return + Line Feed (стиль Windows), когда требуется только линейный канал. Забавный персонаж, которого вы видите, может быть ненужным возвратом Carraige (символ 0x0D или 13 в десятичном формате). – MikeHelland

+0

В «Блокноте», когда вы делаете ** Файл-Сохранить как ** внизу, вы можете установить кодировку на ** UTF-8 **. Если вы уже сохранили его как UTF-8, это нечто другое. Android использует UTF-8 по умолчанию. –

+0

Похож на случай появления строк '\ r \ n'. Вам нужно только '\ n'. Однако публикация файла в виде текста не показывает фактических символов в файле book.txt. – laalto

ответ

0

Вы можете попробовать это:

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 
} 
+0

Не работает. Показывать пустую активность с очень большим прокруткой. – Smolik

+0

см. Мое редактирование .. упоминание UTF-8 в inputStreamReader(). Попробуйте один раз. – user543

0

попробовать один раз. это может помочь.

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

или вы можете заменить этот символ на «\ n» и теперь можете использовать это снова, если это не сработало.

0

Спасибо всем! Я преобразовал свой файл из 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())); 
Смежные вопросы