TextView没有按照string.xml的要求显示

时间:2016-02-16 10:34:14

标签: android textview

我必须在textview中显示一些语法突出显示的代码。所以我正在测试语法hhighligting是否有效

我在strings.xml中添加了一些测试代码,并尝试在textview中显示它

一切正常,但在运行应用程序时,代码显示在一行中 如下 enter image description here

我的代码

的strings.xml

<?xml version="1.0" encoding="utf-8"?>

<string name="app_name">syntaxtest</string>
<string name="javacode">
    public class MainActivity extends Activity 
    {
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    TextView tv = (TextView) findViewById(R.id.mainTextView);

    }
    }</string>

mainactivity.java

public class MainActivity extends Activity 
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    String code = getResources().getString(R.string.javacode);

    TextView tv = (TextView) findViewById(R.id.mainTextView);

    // code is a String with source code to highlight
     // myTextView is a TextView component
    PrettifyHighlighter highlighter = new PrettifyHighlighter();
    String highlighted = highlighter.highlight("java", code);
    tv.setText(Html.fromHtml(highlighted));

}
}

4 个答案:

答案 0 :(得分:2)

为标签尝试转义序列'\ t',为新行尝试'\ n'

<url-pattern>/context/MyController/*</url-pattern>

有许多其他后遗症可能对您有用,请参阅here

答案 1 :(得分:2)

可以通过在每一行的末尾添加“\ n”来解决。

<string name="app_name">syntaxtest</string>
<string name="javacode">
    public class MainActivity extends Activity\n
    {\n
    @Override\n
    protected void onCreate(Bundle savedInstanceState)\n
    {\n
    super.onCreate(savedInstanceState);\n
    setContentView(R.layout.main);\n
    TextView tv = (TextView) findViewById(R.id.mainTextView);\n
    }\n
    }</string>

更新: 空格<tab>新行使用<br>

您正在使用Html.fromHtml,因此您需要添加以下代码,

<string name="javacode">
<![CDATA[public class MainActivity extends Activity {<br></br>
@Override<br></br>
protected void onCreate(Bundle savedInstanceState)<br></br>
{<br></br>
super.onCreate(savedInstanceState);<br></br>
setContentView(R.layout.main);<br></br>
TextView tv = (TextView)<br></br>
findViewById(R.id.mainTextView);<br></br>
}<br></br>
}]]></string>

答案 2 :(得分:1)

使用\n,您需要转到字符串内容的下一行。

public class MainActivity extends Activity\n {\n @Override 像那样。 希望有所帮助

答案 3 :(得分:0)

你的字符串:

<string name="javacode">
public class MainActivity extends Activity \n
{\n
\t@Override\n
\tprotected void onCreate(Bundle savedInstanceState)
\t{\n
\t\tsuper.onCreate(savedInstanceState);\n
\t\tsetContentView(R.layout.main);\n
\t\tTextView tv = (TextView)\n
\t\tfindViewById(R.id.mainTextView);\n
\t}\n
}</string>

您的MainActivity.java

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String code = getResources().getString(R.string.javacode);
        TextView tv = (TextView) findViewById(R.id.mainTextView);       
        tv.setText(code);

    }
}
相关问题