You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.7 KiB
74 lines
3.7 KiB
7 months ago
|
Text Styling
|
||
|
============
|
||
|
This sample shows how to style text on Android using spans, in Kotlin, using [Android KTX](https://github.com/android/android-ktx).
|
||
|
|
||
|
Introduction
|
||
|
------------
|
||
|
## Features
|
||
|
Parse some hardcoded text and do the following:
|
||
|
* Paragraphs starting with “> ” are transformed into quotes.
|
||
|
* Text enclosed in “```” will be transformed into inline code block.
|
||
|
* Lines starting with “+ ” or “* ” will be transformed into bullet points.
|
||
|
To update the text, modify the value of `R.string.display_text`.
|
||
|
This project is not meant to fully cover the markdown capabilities and has several limitations; for example, quotes do not support nesting other elements.
|
||
|
|
||
|
## Implementation
|
||
|
The text is parsed in the [`Parser.parse`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Kotlin/app/src/main/java/com/android/example/text/styling/parser/Parser.kt#L42) method and the spans are created in the [`MarkdownBuilder.markdownToSpans`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Kotlin/app/src/main/java/com/android/example/text/styling/renderer/MarkdownBuilder.kt#L43) method.
|
||
|
To see how to apply one or multiple spans on a string, check out [`MarkdownBuilder.buildElement`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Kotlin/app/src/main/java/com/android/example/text/styling/renderer/MarkdownBuilder.kt#L53). For examples of creating custom spans, see [`BulletPointSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Kotlin/app/src/main/java/com/android/example/text/styling/renderer/spans/BulletPointSpan.kt), [`CodeBlockSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Kotlin/app/src/main/java/com/android/example/text/styling/renderer/spans/CodeBlockSpan.kt) or [`FontSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Kotlin/app/src/main/java/com/android/example/text/styling/renderer/spans/FontSpan.kt).
|
||
|
|
||
|
## Testing
|
||
|
Text parsing is tested with JUnit tests in `ParserTest`. Span building is tested via Android JUnit tests, in `MarkdownBuilderTest`.
|
||
|
|
||
|
|
||
|
Getting Started
|
||
|
---------------
|
||
|
|
||
|
Clone this repository, enter the top level directory and run `./gradlew tasks`
|
||
|
to get an overview of all the tasks available for this project.
|
||
|
|
||
|
Some important tasks are:
|
||
|
|
||
|
```
|
||
|
assembleDebug - Assembles all Debug builds.
|
||
|
installDebug - Installs the Debug build.
|
||
|
connectedAndroidTest - Installs and runs the tests for Debug build on connected
|
||
|
devices.
|
||
|
test - Run all unit tests.
|
||
|
```
|
||
|
|
||
|
Screenshots
|
||
|
-----------
|
||
|
<img src="../screenshots/main_activity.png" width="30%" />
|
||
|
|
||
|
Support
|
||
|
-------
|
||
|
- Stack Overflow: http://stackoverflow.com/questions/tagged/android-text
|
||
|
|
||
|
If you've found an error in this sample, please file an issue:
|
||
|
https://github.com/googlesamples/android-text/issues
|
||
|
|
||
|
Patches are encouraged, and may be submitted by forking this project and
|
||
|
submitting a pull request through GitHub.
|
||
|
|
||
|
License
|
||
|
--------
|
||
|
```
|
||
|
Copyright 2018 The Android Open Source Project
|
||
|
|
||
|
Licensed to the Apache Software Foundation (ASF) under one or more contributor
|
||
|
license agreements. See the NOTICE file distributed with this work for
|
||
|
additional information regarding copyright ownership. The ASF licenses this
|
||
|
file to you under the Apache License, Version 2.0 (the "License"); you may not
|
||
|
use this file except in compliance with the License. You may obtain a copy of
|
||
|
the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
License for the specific language governing permissions and limitations under
|
||
|
the License.
|
||
|
```
|
||
|
|