¿Alguien sabe de librerías de resaltado de sintaxis que funcionan en Android? He visto jsyntaxpane pero eso no parece ser compatible con Android.¿Destaca la sintaxis de Android?
Respuesta
Para resaltar la sintaxis de sólo lectura, tiene dos opciones:
encontrar una biblioteca Java que puede sintaxis resaltado y generar HTML usando
<font color="">
(es decir, sin CSS). A continuación, puede usarHtml.fromHtml()
para crear un objetoSpanned
que puede entregar aTextView
.Busque una biblioteca Java que pueda resaltar la sintaxis y generar cualquier tipo de HTML. A continuación, puede visualizarlo en un
WebView
. Esto parece ser lo que hace theandroid-codepad
project un comentarista vinculado.
Si usted está buscando resaltado de sintaxis para un editor de , que es significativamente más difícil. Mientras que EditText
puede tomar el mismo Spanned
que TextView
puede, debe ejecutar todo a través del resaltador de sintaxis para reflejar los cambios, ya sea por pulsación de tecla o después de una pausa al escribir. O bien, necesitaría hornear las reglas de resaltado de sintaxis mucho más estrictamente para el proceso de edición, para que de alguna manera pueda ajustar incrementalmente el resaltado sin tener que rehacer todo el contenido del EditText
. No he visto un editor de resaltado de sintaxis de código abierto para Android, aunque hay algunos de código cerrado como aplicaciones en Play Store.
gracias, lo necesito para un editor. Parece que voy a comenzar a buscar en jsyntaxpane para ver si puedo portarlo a android/edittext. – ng93
@ ng93: ¿Tuvo algún éxito implementando resaltador de sintaxis? En caso afirmativo, ¿puede explicar un proceso de implementación? Gracias de antemano. – rule
¿Ha encontrado alguna biblioteca Java que tenga la magia '' descrita en el 1. punto? – fracz
Bueno, lo hice un editor de resaltado de sintaxis de código abierto para Android:
https://github.com/markusfisch/ShaderEditor
Es bastante simple y tal vez sólo es adecuado para los datos pequeños, pero es probable que sea un buen punto de partida.
Muy buen ejemplo. Definitivamente muestra su simplicidad. Fuente de EditText: https://github.com/markusfisch/ShaderEditor/blob/master/src/de/markusfisch/android/shadereditor/ShaderEditor.java – JRomero
@JRomero Link doesn Parece que ya no funciona –
El enlace anterior está roto [aquí hay un nuevo enlace] (https://github.com/markusfisch/ShaderEditor/blob/5af7129d05a1d122923ae78d110a55a09597589f/app/src/main/java/de/markusfisch/android/shadereditor /widget/ShaderEditor.java) –
Logré crear un resaltador de sintaxis para Android, basado en el Prettify. Fue fácil, en realidad, cuando encontré el Java Prettify. Simplemente descárguelo (lamentablemente, no está publicado para maven) y agregue su jar a la ruta de compilación de su aplicación.
El resaltador de sintaxis que crea basándose en que:
public class PrettifyHighlighter {
private static final Map<String, String> COLORS = buildColorsMap();
private static final String FONT_PATTERN = "<font color=\"#%s\">%s</font>";
private final Parser parser = new PrettifyParser();
public String highlight(String fileExtension, String sourceCode) {
StringBuilder highlighted = new StringBuilder();
List<ParseResult> results = parser.parse(fileExtension, sourceCode);
for(ParseResult result : results){
String type = result.getStyleKeys().get(0);
String content = sourceCode.substring(result.getOffset(), result.getOffset() + result.getLength());
highlighted.append(String.format(FONT_PATTERN, getColor(type), content));
}
return highlighted.toString();
}
private String getColor(String type){
return COLORS.containsKey(type) ? COLORS.get(type) : COLORS.get("pln");
}
private static Map<String, String> buildColorsMap() {
Map<String, String> map = new HashMap<>();
map.put("typ", "87cefa");
map.put("kwd", "00ff00");
map.put("lit", "ffff00");
map.put("com", "999999");
map.put("str", "ff4500");
map.put("pun", "eeeeee");
map.put("pln", "ffffff");
return map;
}
}
Los colores de la sintaxis están codificados, pero pueden ser también establecidos por decir preferencias de la aplicación. Con el fin de mostrar un código fuenteJava en un TextView
, acaba de hacer:
// code is a String with source code to highlight
// myTextView is a TextView component
PrettifyHighlighter highlighter = new PrettifyHighlighter();
String highlighted = highlighter.highlight("java", code);
myTextView.setText(Html.fromHtml(highlighted));
La biblioteca de Java Prettify hizo que mi aplicación alrededor de 50kB más grande.
@wojciech Perfecto y preciso ................ –
@ WojciechFrącz Dude, ¿qué pasa con el código C? esperando la respuesta –
@Tarun, reemplace primero " java "argumento con" c "o" cpp ". – fracz
He creado una API para resaltar texto que puede resolver su problema.
https://github.com/nakshay/TextHighlighter
Esta API permite pasar las palabras y los colores específicos a las palabras y devuelve la cadena que está formateado con etiquetas html que se puede enviar a Html.fromHtml() para obtener el texto resaltado. agregue la dependencia de Gradle debajo del archivo gradle de su módulo.
compile 'com.github.akshay-naik:texthighlighterapi:1.1.0'
Los enlaces a posibles soluciones siempre son bienvenidos, pero por favor agregue algunos detalles para futuros visitantes en caso de que el enlace ya no esté disponible. –
Gracias por su sugerencia Nikolay. agregando más detalles. – Akshay
Lo usé No puedo encontrar esta función highlighter.setLanguage(); –
- 1. cursiva propicio en la sintaxis de vim que destaca para el terminal de Mac
- 2. ¿Destaca la sintaxis HTML5 compatible con algún editor de texto? Notepad ++ tal vez?
- 3. ¿Qué código destaca las librerías para Ruby?
- 4. sintaxis de estilo barra de progreso Android
- 5. Sqlite Suprimir sintaxis de consulta en Android
- 6. ¿Destaca JavaScript simple en un área de texto?
- 7. SQlite - Android - Sintaxis de clave externa
- 8. estilo Emacs que destaca para inc-búsqueda en vim
- 9. Android Sqlite IN, NO EN Sintaxis
- 10. aprender a dar sentido a la sintaxis de la sintaxis
- 11. resaltado SVN y sintaxis en Android
- 12. Habilitación de sintaxis Git destacando para el terminal de Mac
- 13. Explicando la sintaxis de foldexpr
- 14. Comprobando la sintaxis de VBScript
- 15. Entender la sintaxis de LINQ
- 16. C# "Uso" de la sintaxis
- 17. sintaxis de la variable jquery
- 18. Sintaxis de la expresión Lambda
- 19. Explicación de la sintaxis Doctype
- 20. Confundir la sintaxis .gitignore
- 21. JSON incluye la sintaxis
- 22. Convertir Notepad ++ sintaxis del archivo de vim destacando (o ¿alguien tiene aq/kdb + archivo de resaltado de sintaxis de vim?)
- 23. Scala para la comprensión de la sintaxis
- 24. NSPrequisite la sintaxis de la subconsulta
- 25. bootstrap scrollspy destaca último botón de enlace de navegación después de cargar
- 26. Cómo convertir la sintaxis de la consulta en la sintaxis del método
- 27. ¿Cuál es la sintaxis correcta para el atributo de fonemas en TTS XML de Android?
- 28. sintaxis
- 29. Significado de! en la sintaxis de Java
- 30. Historial de la sintaxis Vulnerable de VB.NET
¿Qué quiere resaltar yiu? – Ahmad
por favor, elabore más sobre su pregunta, ¿qué componente desea mostrar resaltando? –
http://code.google.com/p/android-codepad/ –