1

I had to display some code in my textview with syntax highlighting. So i am testing if the syntax hhighligting works or not

I added some test code to my strings.xml and tried to display it in textview

Everything works good but when the app is run the code is being displayed in 1 line Like below enter image description here

My code

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));

}
}
user5894647
  • 544
  • 6
  • 15

4 Answers4

2

Try escape sequences '\t' for tab and '\n' for new line.

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

There are a number of other sequenes which may come handy for you, see here

Community
  • 1
  • 1
nobalG
  • 4,544
  • 3
  • 34
  • 72
2

It can be solved by adding "\n" at the end of each line.

<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>

UPDATE : <tab> for space and for new line use <br>

You are using Html.fromHtml so you need to add below code,

<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>
adhi
  • 326
  • 4
  • 6
1

Use \n where you need to go to next line in your string content.

public class MainActivity extends Activity\n {\n @Override like that. Hope that helps

0

your string:

<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>

your 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);

    }
}
Sayalee Pote
  • 511
  • 5
  • 22