Un editor de código simple con resaltado de sintaxis y pellizcar para zoom

| Maestro |
|---|
Eche un vistazo a la aplicación de demostración (módulo app ) para una muestra completa.
Para usar esta biblioteca, solo incluya en sus dependencias utilizando
repositories {
...
maven { url "https://jitpack.io" }
}
en su proyecto Build.gradle File y
dependencies {
...
def codeEditorVersion = "v4.0.1"
implementation("com.github.markusressel:KodeEditor:${codeEditorVersion}")
}
en su módulo deseado build.gradle File.
Para usar este editor, simplemente agregue algo similar a este a su archivo XML de diseño deseado:
<de.markusressel.kodeeditor.library.view.CodeEditorLayout
android:id="@+id/codeEditorView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:ke_divider_color="?android:attr/textColorPrimary"
app:ke_divider_enabled="true"
app:ke_editor_backgroundColor="?android:attr/windowBackground"
app:ke_editor_maxZoom="10.0"
app:ke_lineNumbers_backgroundColor="#ccc"
app:ke_lineNumbers_textColor="#000"
app:ke_minimap_enabled="true"
app:ke_minimap_maxDimension="200dp"
app:ke_minimap_borderColor="#000"
app:ke_minimap_indicatorColor="#f00"
/>
Actualmente no hay detección automática para el idioma utilizado en un documento. Debe administrar el marcador de sintaxis usted mismo y llamar al método setSyntaxHighlighter cuando sea apropiado.
Eche un vistazo a la sección Kodehighlighter sobre esto.
Eche un vistazo a la sección Kodehighlighter sobre esto.
Kodeeditor se puede diseñar de múltiples maneras:
| Nombre | Descripción | Tipo | Por defecto |
|---|---|---|---|
| ke_linenumbers_textcolor | Especifica el color de texto de los números de línea | Color | android.R.attr.textColorPrimary |
| ke_linenumbers_backgroundcolor | Especifica el color de fondo de la vista de números de línea | Color | android.R.attr.windowBackground |
| ke_divider_enabled | Especifica si se debe dibujar un divisor entre los números de línea y el contenido del editor de código real | Booleano | true |
| ke_divider_color | Especifica el color del divisor (no tiene ningún efecto si ke_divider_enabled se establece en false ) | Color | android.R.attr.textColorPrimary |
| Ke_Editor_BackgroundColor | Especifica el color de fondo de la vista del editor de códigos | Color | android.R.attr.windowBackground |
| ke_editor_maxzoom | Especifica el nivel máximo de zoom del editor | Flotar | 10 |
| ke_minimap_enabled | Habilita el minimap | Booleano | true |
| ke_minimap_maxdimension | Especifica la dimensión máxima del minimap para ambos eje | Dimensión | 150dp |
| ke_minimap_bordercolor | Especifica el color del borde del minimap | Color | Color.BLACK |
| ke_minimap_indicatorcolor | Especifica el color del indicador minimap | Color | Color.RED |
Puede usar esos atributos directamente en la vista en su diseño de esta manera:
<de.markusressel.kodeeditor.library.view.CodeEditorView
android:id="@+id/codeEditorView"
android:layout_width="match_parent"
android:layout_height="match_parent"
[...]
app:ke_divider_color="?android:attr/textColorPrimary"
app:ke_divider_enabled="true"
app:ke_editor_backgroundColor="?android:attr/windowBackground"
app:ke_editor_maxZoom="10.0"
app:ke_lineNumbers_backgroundColor="#ccc"
app:ke_lineNumbers_textColor="#000"
app:ke_minimap_enabled="true"
app:ke_minimap_maxDimension="200dp"
app:ke_divider="true"
[...] />
o especifíquelos en el tema de su aplicación ( styles.xml en la aplicación DEM) para aplicar un estilo a nivel mundial:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Other theme attributes of your application -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- CodeEditorView -->
<item name="ke_lineNumbers_backgroundColor">#ccc</item>
<item name="ke_lineNumbers_textColor">#000</item>
<item name="ke_divider_enabled">false</item>
<item name="ke_divider_color">#000</item>
<item name="ke_editor_backgroundColor">#fff</item>
<item name="ke_editor_maxZoom">10.0</item>
<item name="ke_editor_followCursor">true</item>
<item name="ke_minimap_enabled">true</item>
<item name="ke_minimap_maxDimension">200dp</item>
[...]
</style>
</resources>
Todos los atributos de estilo también se pueden especificar usando el código. Dado que KodeEditorLayout es solo un envoltorio para extender el CodeEditorView con números de línea y el minimap para usar algunos de los métodos que necesita para acceder primero a la propiedad coincidente del KodeEditorLayout .
| Nombre | Descripción | Tipo |
|---|---|---|
| texto | Establece el texto dado en el editor. | Cadena |
| setText (@StringRes) | Establece el recurso de cadena dado como el texto en el editor. | Intencionalmente |
| Languagerulebook | Obtiene/establece el libro de reglas de idioma activo utilizado para resaltar. Use null para deshabilitar la resaltación por completo. | LanguageruleBook? |
| editable | Obtiene/establece si el contenido del editor es editable. | Booleano |
| Nombre | Descripción | Tipo |
|---|---|---|
| showdivider | Obtiene/establece si se muestra el divisor entre números de línea y editor de código. | Booleano |
| lino | Establece texto para mostrar el número de línea basado en el número total de líneas | (Largo) -> Lista |
| Nombre | Descripción | Tipo |
|---|---|---|
| showminimap | Obtiene/se muestra si se muestra el minimap. | Booleano |
| Minimapmaxdimension | Obtiene/establece la dimensión máxima del minimap en píxeles. | Flotar |
| mínimo | Obtiene/establece el tamaño del borde Minimap en píxeles. | Número |
| minimapblercolor | Obtiene/establece el color del borde Minimap. | @Colorint |
| minimapindicatorcolor | Obtiene/establece el color indicador Minimap. | @Colorint |
| mínimo | Obtiene/establece la gravedad de posicionamiento de minimap. | Intencionalmente |
Para acceder a estos métodos API, use la propiedad codeEditorLayout.codeEditorView .
| Nombre | Descripción | Tipo |
|---|---|---|
| texto | Establece el texto dado en el editor. | Cadena |
| setText (@StringRes) | Establece el recurso de cadena dado como el texto en el editor. | Intencionalmente |
| getLinecount () | Devuelve el recuento de línea actual. | Largo |
| Languagerulebook | Obtiene/establece el libro de reglas de idioma activo utilizado para resaltar. Use null para deshabilitar la resaltación por completo. | LanguageruleBook? |
| editable | Obtiene/establece si el contenido del editor es editable. | Booleano |
| jasta | Verdadero cuando se selecciona un rango. | Booleano |
| selección | El índice de inicio de la selección actual. | Intencionalmente |
| seleccionar | El índice final de la selección actual. | Intencionalmente |
| SelectionChangedListener | Obtiene/establece el oyente para los cambios de selección. | SelectionChangedListener? |
GitHub es para la codificación social: si desea escribir código, aliento las contribuciones a través de solicitudes de extracción de horquillas de este repositorio. Cree boletos de GitHub para errores y nuevas funciones y comente las que le interesan.
MIT License
Copyright (c) 2018 Markus Ressel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.