Cómo poblar webview en android con texto sin formato de base de datos y ser capaz de manejar caracteres de nueva línea
Soy nuevo en el desarrollo de java y android Estoy trabajando en una aplicación que contiene GUI simple para acceder y leer los programas fundamentales en C y Java para los estudiantes.
Estoy tratando de poblar una webview con un archivo de texto (un C-programa en este caso), que está pre-cargado en una determinada columna de mi base de datos.
- Zoom Vista previa de Camera2 con TextureView
- Galería de Android: reemplaza el mapa de bits en ImageView después de que el desplazamiento se detuvo
- Pinch Ampliar la vista web
- Obtener el ancho interno de la ventana y la altura del androide integrado en el navegador web en todos los niveles de zoom
- Android pinch / zoom y glfrustum
Decidí no usar un scrollview porque simultáneamente desplazarse y hacer zoom es muy difícil de implementar. El zoom requiere realizar implementaciones personalizadas que me resulta difícil entender.
Así que decidí utilizar webview ya que es fácilmente desplazable y requiere sólo una línea de código para implementar el zoom de texto.
Tengo 2 problemas:
1) la webview no puede manejar la nueva línea usando mi implementation.ie actual intenta exhibir todo el texto en la misma línea en vez de ir a la línea siguiente
2) no muestra "stdio.h", "stdlib.h", etc …. básicamente todas las palabras con la extensión .h que es parte de casi todos los programas de C. Es esencial para mostrar estos.
He intentado las siguientes 2 implementaciones (quizás incorrectamente):
1) loadData (String data, String mimeType, String encoding)
2) loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
Mi código es el siguiente:
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(); } } }
El archivo XML correspondiente (para puposes de diseño) es:
<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>
Fui a través de otros foros con preguntas similares, pero no fue capaz de encontrar soluciones adecuadas. Uno de ellos sugirió usar javascript para solucionar este problema . Todo lo que sé acerca de javascripts es hacer validaciones en formularios de aplicación web para mi proyecto de la universidad. ¿Es esto posible? Si es así, ¿cómo sugiere que vaya a aprender javascript y cómo exactamente se supone que para implementarlo.
Además, ¿cómo funciona replaceAll ("\ +", "") ¿Cómo es exactamente la eliminación de caracteres no deseados? También no estoy muy familiarizado con los estándares de codificación de caracteres
- Lienzo Zoom va al punto (0,0)
- Implementar pinch Zoom usando ViewPager
- Android - Google Maps api v2 - Desactivar el control de zoom
- Wiki sobre android-zoom-view.jar
- Código de Android para ampliar y desplazar un diseño relativo que contiene cuadros de texto, botones, hilanderos, etc.
- Cómo eliminar los botones de zoom en la vista web de Android?
- Osmdroid y Pinch
- Cómo agrandar el elemento central en un listview - android?
Cambiar el tipo de contenido a "text / plain" no funcionó para mí en Android 4.4. Todo el contenido estaba todavía en una línea. Lo que funcionó sin embargo es la respuesta aceptada en esta pregunta de desbordamiento de pila:
WebView de Android manipula incorrectamente nuevas líneas en texto preformateado