我是 java 和 android 开发的新手,我正在开发一个应用程序,其中包含简单的 GUI,用于访问和阅读 C 和 Java 中的基本程序供学生使用。
我正在尝试使用预加载在我的数据库的某个列中的文本文件(在这种情况下为 C 程序)填充 web 视图。
我决定不使用滚动视图,因为同时滚动和缩放很难实现。缩放需要进行我难以理解的自定义实现。
因此我决定使用 webview,因为它很容易滚动并且只需要 1 行代码来实现文本的缩放。
我有两个问题:
1) webview 无法使用我当前的实现处理换行符。即它尝试在同一行显示所有文本而不是转到下一行
2)它不显示“stdio.h”,“stdlib.h”等......基本上所有带有.h扩展名的单词都是几乎所有C程序的一部分。显示这些是必不可少的。
我尝试了以下 2 种实现(可能不正确):
1)loadData(字符串数据,字符串mimeType,字符串编码)
2)loadDataWithBaseURL(字符串baseUrl,字符串数据,字符串mimeType,字符串编码,字符串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("\+","")是如何工作的?它是如何删除不需要的字符的?另外我对字符编码标准不是很熟悉