-1

我想在屏幕上显示用户应该可以看到的整个 c 程序。

我使用了 textView 但由于代码包含特殊符号而出现错误。

例如:

 android:text=" #include <stdio.h>
 int main()
{
int x, y, temp;

printf("Enter the value of x and y\n");
scanf("%d%d", &x, &y);

printf("Before Swapping\nx = %d\ny = %d\n",x,y);

temp = x;
x = y;
y = temp;

printf("After Swapping\nx = %d\ny = %d\n",x,y);

return 0;
 }" />

我还希望用户应该能够滚动代码,因为代码可能比示例大。我是菜鸟,所以请建议我为 textView 显示代码的任何替代方案。

4

2 回答 2

1

将您的 C 代码保存在 assets 文件夹中的文件中,例如“res/assets/code.c”。

编写一个将文件内容读取到字符串的函数:

private String readFileInAssetsDir(String filename) {
    BufferedReader br = null;
    StringBuffer sb = new StringBuffer();
    try {
        br = new BufferedReader(new InputStreamReader(getAssets().open(filename)));
        String line;
        while((line = br.readLine()) != null)
            sb.append(line + "\n");
    } catch(Exception e) {
        // TODO
    }
    return sb.toString();
}

而现在在你的布局中定义一个WebView(不是TextView)(优点是可以显示任何字符,WebView直接提供缩放和滚动):

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1" />

最后,我将所有 C 代码包含在一个<pre></pre>标签中,然后在 WebView 小部件中显示它:

    String plainCode = readFileInAssetsDir("code.c");
    String htmlCode = "<pre>" + plainCode + "</pre>";
    webView.loadDataWithBaseURL("", htmlCode, "text/html", "utf-8", "");
于 2013-01-15T14:47:19.073 回答
0

编辑:这可行,但只能读取 TXT 文件中的单行文本

字符串线;文本视图视图;

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_addingprogrammultipletimes);

    AssetManager am = getAssets();
    try {
        InputStream is = am.open("add.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        line = reader.readLine();
        view = (TextView) findViewById(R.id.textView);
        view.setText(line);
    } catch (Exception e) {
        e.printStackTrace();
    }


}
于 2017-03-30T08:01:58.873 回答