Форматирование текстового файла для отображения в EditText на Android - PullRequest
0 голосов
/ 05 августа 2011

У меня работает мой маленький html-фишер, и он берет текстовый файл в виде строки URL. Я могу вызвать setText для моего представления EditText, и он действительно отобразит текст в текстовом файле, но форматирование вообще не похоже (я говорю о простых вещах, таких как возврат каретки и перевод строки). Как я могу заставить это визуализироваться немного лучше в EditText? Исходный текстовый файл выглядит так:

Представьте себе следующее из ресурса:

http://www.someaddress.com/thetextfile.txt

Original Text File here.  

1. First thing on the text file.

2. Second thing on the text file...

   Finally the end of the text file.  This is a long string blah blah
that I like to use here.  Notice the carriage return line breaks and indentation
on the paragraph.

Я могу получить приведенное выше в виде строки, но при отсутствии возврата каретки, когда он отображается в EditView. Могу ли я в любом случае добавить это? Это не вопрос добавления \ n или \ r, потому что они уже будут в текстовом файле, который я подозреваю (был написан в Notepad ++). Так есть ли способ сделать это немного более отформатированным? (и сохранить форматирование при сохранении строки обратно на диск или в базу данных?

EDIT:

<EditText android:id="@+id/contract_text_input"
        android:layout_width="650sp" android:layout_height="wrap_content"
        android:lines="25"
        android:scrollbars = "vertical"
         android:gravity="top|left" android:inputType="textMultiLine"
        android:scrollHorizontally="false" 
        android:minWidth="10.0dip"
        android:maxWidth="5.0dip"/>

EDIT:

Это методы, которые извлекают этот текстовый файл из Интернета. Кажется, они вырывают все \ n и \ r. Но если я проверю тот файл, который находится в сети, в нем есть только \ t. Так, может быть, его filezilla загружает на мой веб-сервер файл?

public static InputStream getInputStreamFromUrl(String url){
            InputStream contentStream = null;

            try{
              HttpClient httpclient = new DefaultHttpClient();
              HttpResponse response = httpclient.execute(new HttpGet(url));
              contentStream = response.getEntity().getContent();
            } catch(Exception e){
               e.printStackTrace();
            }
            return contentStream;
         }

  public static String getStringFromUrl(String url)  {
         BufferedReader br = new BufferedReader(new InputStreamReader(getInputStreamFromUrl(url)));

         StringBuffer sb = new StringBuffer();

         try{
          String line = null;

          while ((line = br.readLine())!=null){
           sb.append(line);
          }
         }catch (IOException e){
          e.printStackTrace();
         }
         return sb.toString();
  }

Вот как я в конечном итоге обновляю EditText:

private class FragmentHttpHelper extends AsyncTask<Void, Void, String>{
         protected void onPostExecute(String result) {               


                contractTextTxt.setText(result);
            }
        @Override
        protected String doInBackground(Void... params) {

            return getStringFromUrl(urlReferenceTxt.getText().toString());

        }         
    }

Ответы [ 2 ]

2 голосов
/ 18 октября 2012

Проверьте Android API.Проблема заключается в следующей строке кода:

while ((line = br.readLine())!=null)
{
    //code goes here
}

Вызов readLine () удаляет переводы строки, возврат каретки и перевод строки.Вам нужно использовать read (), если вы хотите получить все.

1 голос
/ 05 августа 2011

Привет, извините, я только что сделал аналогичную вещь в моем приложении

и назвал

((EditText) findViewById(R.id.textView1))
            .setText("Original Text File here.\r\n\r\n1. First thing on the text file.\r\n\r\n2. Second thing on the text file...\r\n\r\n   Finally the end of the text file.  This is a long string blah blah that I like to use here.  Notice the carriage return line breaks and indentation on the paragraph.");

, что было бы так же, как ваша строка

, и я

enter image description here

, который мне подходит!

мой текст редактирования был

<EditText   android:id="@+id/textView1" android:layout_width="wrap_content"
    android:layout_weight="0" android:layout_height="wrap_content"></EditText>

редактировать извините огромное изображение

edit2: проверить строковое значение отладчика enter image description here

...