Как заполнить webview в android обычным текстом из базы данных и иметь возможность обрабатывать символы новой строки

Я новичок в разработке java и android. Я работаю над приложением, которое содержит простой графический интерфейс для доступа и чтения фундаментальных программ на C и Java для студентов.

Я пытаюсь заполнить webview текстовым файлом (C-программой в этом случае), который предварительно загружен в определенный столбец моей базы данных.

Я решил не использовать scrollview, потому что одновременная прокрутка и масштабирование очень сложно реализовать. Масштабирование требует создания пользовательских реализаций, которые мне трудно понять.

Таким образом, я решил использовать webview, поскольку он легко прокручивается и требует всего 1 строки кода для реализации масштабирования текста.

У меня есть 2 проблемы:

1) веб-просмотр неспособен обрабатывать новую строку, используя мою текущую реализацию. Он пытается отобразить весь текст в той же строке, а не перейти к следующей строке

2) он не отображает «stdio.h», «stdlib.h» и т. Д. … в основном все слова с расширением .h, которое является частью почти всех программ на C. Важно их отобразить.

Я пробовал следующие 2 реализации (возможно, неправильно):

1) loadData (String data, String mimeType, String encoding)

2) loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

Мой код выглядит следующим образом:

package com.example.uopengineering; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.webkit.WebView; public class viewProgramActivity<x> extends Activity { private SQLiteDatabase database; ExternalDbOpenHelper dbOpenHelper; private WebView webView; private static final String DB_NAME = "umangdb.db"; private String rowid; private String programtext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewprogram); dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME); database = dbOpenHelper.openDataBase(); Intent intent=getIntent(); rowid=intent.getStringExtra("myextra"); String query="select * from engg_table where _id="+rowid; Cursor myCursor = database.rawQuery(query,null); myCursor.moveToFirst(); programtext=myCursor.getString(4); myCursor.close(); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setJavaScriptEnabled(true); //webView.loadData(programtext, "text/html", "UTF-8"); try { webView.loadData(URLEncoder.encode(programtext,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8"); //webView.loadDataWithBaseURL(null, programtext, null, query, null); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

Соответствующий XML-файл (для купирования макета):

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:id="@+id/article" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines = "22" android:scrollbars = "vertical" /> <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> </RelativeLayout> 

Я прошел через другие форумы с похожими вопросами, но не смог найти подходящих решений. Один из них предложил использовать javascript для решения этой проблемы . Все, что я знаю о javascripts, делает проверки в формах веб-приложений для моего проекта в колледже. Возможно ли это? Если да, то как вы предлагаете мне заниматься изучением javascript и как именно я должен его реализовать.

Кроме того, как работает replaceAll ("\ +", "") ? Как именно он удаляет нежелательные символы? Также я не очень хорошо знаком с стандартами кодировки символов

Просто изменение типа контента на «text / plain» не работало для меня в Android 4.4. Все содержимое осталось в одной строке. То, что работает, является принятым ответом в этом вопросе переполнения стека:

Android WebView неправильно обрабатывает символы новой строки в предварительно отформатированном тексте