SyntaxView

Additional

Language
CSS
Version
1.0.3 (Jun 7, 2016)
Created
Jun 6, 2016
Updated
Jul 5, 2017
Owner
Fisk Debug (fiskurgit)
Contributor
Fisk Debug (fiskurgit)
1
Activity
Badge
Generate
Download
Source code

Advertising

SyntaxView

Code beautifier for Android - a wrapper around a WebView running HighlightJS. Written too quickly by accident while writing another app. (Note - I recently found some issues with this library when running in a ViewPager in a Fragment, let me know of you have any similar issues)

Dependency

Add jitpack.io to your root build.gradle, eg:

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

then add the dependency to your project build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.github.fiskurgit:SyntaxView:1.0.3'
}

You can find the latest version in the releases tab above: https://github.com/fiskurgit/SyntaxView/releases

More options at jitpack.io: https://jitpack.io/#fiskurgit/SyntaxView

Licence

Full licence here: https://github.com/fiskurgit/SyntaxView/blob/master/LICENSE

In short:

The MIT License is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable.

Known Issues

  • View lifecycle not implemented, doesn't handle orientation changes
  • Doesn't like large files

Usage

If loading source code from file add the READ_EXTERNAL_STORAGE permission to your manifest.xml and add the runtime permission to your Activity/Fragment:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Add to your Android layout xml:

<eu.fiskur.syntaxview.SyntaxView
    android:id="@+id/syntaxview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Initialise as usual:

SyntaxView syntaxView = (SyntaxView) findViewById(R.id.syntaxview);

Display code string:

String helloWorld = "private static final String helloWorld = \"HelloWorld!\";";
syntaxView.loadString(helloWorld, "java");

Load file:

syntaxView.loadFile(file);

Theming

All HighlightJS themes are available (the default is a dark theme called 'monokai-sublime'):

String[] themes = syntaxView.themes();
...
syntaxView.setTheme("monokai");

You can also set the theme when you pass the code arguments:

syntaxView.loadString(helloWorld, "java", "monokai");

//for a file:
syntaxView.loadFile(file, "monokai");

You can also set the ProgressBar loading spinner colour to match whichever theme you use:

syntaxView.setLoadingColor(Color.parseColor("#00ffcc"));