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