{"id":18817393,"url":"https://github.com/webtoon/readmoretextview","last_synced_at":"2025-04-04T13:08:11.013Z","repository":{"id":37082310,"uuid":"494340649","full_name":"webtoon/ReadMoreTextView","owner":"webtoon","description":"Text components supporting 'Read more' UX for Android View and Jetpack Compose","archived":false,"fork":false,"pushed_at":"2025-03-08T05:08:04.000Z","size":8061,"stargazers_count":179,"open_issues_count":2,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-28T12:03:42.089Z","etag":null,"topics":["android-library","android-view","jetpack-compose","readmore"],"latest_commit_sha":null,"homepage":"https://webtoon.github.io/ReadMoreTextView/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webtoon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-20T06:03:13.000Z","updated_at":"2025-03-08T05:08:06.000Z","dependencies_parsed_at":"2023-12-15T15:27:45.812Z","dependency_job_id":"81d07328-4c8c-490b-bc8e-c162063adb95","html_url":"https://github.com/webtoon/ReadMoreTextView","commit_stats":{"total_commits":169,"total_committers":3,"mean_commits":"56.333333333333336","dds":"0.041420118343195256","last_synced_commit":"6deb9429277091b96abc5a217d7790442eead99d"},"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webtoon%2FReadMoreTextView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webtoon%2FReadMoreTextView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webtoon%2FReadMoreTextView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webtoon%2FReadMoreTextView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webtoon","download_url":"https://codeload.github.com/webtoon/ReadMoreTextView/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247176234,"owners_count":20896437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-library","android-view","jetpack-compose","readmore"],"created_at":"2024-11-08T00:11:09.506Z","updated_at":"2025-04-04T13:08:10.986Z","avatar_url":"https://github.com/webtoon.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReadMoreTextView\n\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"/\u003e\u003c/a\u003e\n\u003ca href='https://developer.android.com'\u003e\u003cimg src='http://img.shields.io/badge/platform-android-green.svg'/\u003e\u003c/a\u003e\n\nThis library provides collapsible Text widgets with 'Read more' and 'Read less' text. (Including [Jetpack Compose][compose])\n\n| **Collapsed** | \u003cimg width=\"300\" src=\"docs/collapsed.png\" /\u003e |\n| ------------- | -------------------------------------------- |\n| **Expanded**  | \u003cimg width=\"300\" src=\"docs/expanded.png\" /\u003e  |\n\n## Versions\n\nEach [release](https://github.com/webtoon/ReadMoreTextView/releases) outlines the version of the AppCompat or Compose library it depends on.\n\n### View\n\u003ctable\u003e\n \u003ctr\u003e\u003ctd\u003eAppCompat 1.3 (1.3.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-view?versionPrefix=1.0\"/\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eAppCompat 1.4 (1.4.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-view?versionPrefix=1.1\"/\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eAppCompat 1.5 (1.5.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-view?versionPrefix=1.2\"/\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eAppCompat 1.6 (1.6.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-view?versionPrefix=1.3\"/\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eAppCompat 1.7 (1.7.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-view?versionPrefix=1.4\"/\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\n### Compose\n\u003ctable\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.1 (1.1.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.0\"/\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.2 (1.2.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.1\"\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.3 (1.3.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.2\"\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.4 (1.4.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.3\"\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.5 (1.5.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.4\"\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.6 (1.6.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.5\"\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.7 (1.7.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.6\"\u003e\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eCompose 1.8 (1.8.x)\u003c/td\u003e\u003ctd\u003e\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/com.webtoonscorp.android/readmore-foundation?versionPrefix=1.7\"\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\n## Libraries\n\nWe are currently releasing various libraries for AppCompat or Compose.\n\n### [ReadMore-View](./readmore-view/)\nA library that provides collapsible `TextView` with 'Read more' and 'Read less' text. (for Android View System)\n\n### [ReadMore-Foundation](./readmore-foundation/)\nA library that provides collapsible `BasicText` with 'Read more' and 'Read less' text. (for [Jetpack Compose][compose])\n\n### [ReadMore-Material](./readmore-material/)\nA library that provides collapsible `Text` with 'Read more' and 'Read less' text based on Material Theme. (for [Jetpack Compose][compose])\n\n### [ReadMore-Material3](./readmore-material3/)\nA library that provides collapsible `Text` with 'Read more' and 'Read less' text based on Material3 Theme. (for [Jetpack Compose][compose])\n\n\n## Attributes\n\nThis libraries provide the same attributes as much as possible regardless of View or [Compose][compose].\n\n### Attributes for 'Read More'\n\n#### `readMoreMaxLines`\n\n| **2 (default)** | \u003cimg width=\"300\" src=\"docs/readMoreMaxLines_default.png\" /\u003e |\n| --------------- | ------------------------------------------------------------ |\n| **`\"1\"`**       | \u003cimg width=\"300\" src=\"docs/readMoreMaxLines_custom.png\" /\u003e |\n\n#### `readMoreOverflow`\n\n| **Ellipsis (default)** | \u003cimg width=\"300\" src=\"docs/readMoreOverflow_default.png\" /\u003e |\n| ---------------------- | ------------------------------------------------------------ |\n| **Clip**               | \u003cimg width=\"300\" src=\"docs/readMoreOverflow_clip.png\" /\u003e |\n\n#### `readMoreText`\n\n| **\"\" (default)**  | \u003cimg width=\"300\" src=\"docs/readMoreText_default.png\" /\u003e |\n| ----------------- | ------------------------------------------------------------ |\n| **`\"Read more\"`** | \u003cimg width=\"300\" src=\"docs/readMoreText_custom.png\" /\u003e |\n\n#### `readMoreTextSize`\n\n| **Same with `textSize` (default)** | \u003cimg width=\"300\" src=\"docs/readMoreTextSize_default.png\" /\u003e |\n| ---------------------------------- | ------------------------------------------------------------ |\n| **`\"11sp\"`**                       | \u003cimg width=\"300\" src=\"docs/readMoreTextSize_custom.png\" /\u003e |\n\n#### `readMoreTextColor`\n\n| **Same with `textColor` (default)** | \u003cimg width=\"300\" src=\"docs/readMoreTextColor_default.png\" /\u003e |\n| ----------------------------------- | ------------------------------------------------------------ |\n| **`\"#FF0000\"`**                     | \u003cimg width=\"300\" src=\"docs/readMoreTextColor_custom.png\" /\u003e |\n\n#### `readMoreTextStyle`\n\n| **Normal (default)** | \u003cimg width=\"300\" src=\"docs/readMoreTextStyle_default.png\" /\u003e |\n| -------------------- | ------------------------------------------------------------ |\n| **Bold**             | \u003cimg width=\"300\" src=\"docs/readMoreTextStyle_bold.png\" /\u003e |\n| **Italic**           | \u003cimg width=\"300\" src=\"docs/readMoreTextStyle_italic.png\" /\u003e |\n\n#### `readMoreTextUnderline` (View only)\n\n| **false (default)** | \u003cimg width=\"300\" src=\"docs/readMoreTextUnderline_default.png\" /\u003e |\n| ------------------- | ------------------------------------------------------------ |\n| **true**            | \u003cimg width=\"300\" src=\"docs/readMoreTextUnderline_true.png\" /\u003e |\n\n#### `readMoreTextDecoration` (Compose only)\n\n| **`null` (default)**  | \u003cimg width=\"300\" src=\"docs/readMoreTextUnderline_default.png\" /\u003e |\n|-----------------------| ------------------------------------------------------------ |\n| **`TextDecoration.Underline`** | \u003cimg width=\"300\" src=\"docs/readMoreTextUnderline_true.png\" /\u003e |\n\n---\n\n### Attributes for 'Read Less'\n\n#### `readLessText`\n\n| **\"\" (default)**  | \u003cimg width=\"300\" src=\"docs/readLessText_default.png\" /\u003e |\n|-------------------| ------------------------------------------------------------ |\n| **`\"Read less\"`** | \u003cimg width=\"300\" src=\"docs/readLessText_custom.png\" /\u003e |\n\n#### `readLessTextSize`\n\n| **Same with `textSize` (default)** | \u003cimg width=\"300\" src=\"docs/readLessTextSize_default.png\" /\u003e |\n| ---------------------------------- | ------------------------------------------------------------ |\n| **`\"11sp\"`**                       | \u003cimg width=\"300\" src=\"docs/readLessTextSize_custom.png\" /\u003e |\n\n#### `readLessTextColor`\n\n| **Same with `textColor` (default)** | \u003cimg width=\"300\" src=\"docs/readLessTextColor_default.png\" /\u003e |\n| ----------------------------------- | ------------------------------------------------------------ |\n| **`\"#FF0000\"`**                     | \u003cimg width=\"300\" src=\"docs/readLessTextColor_custom.png\" /\u003e |\n\n#### `readLessTextStyle`\n\n| **Normal (default)** | \u003cimg width=\"300\" src=\"docs/readLessTextStyle_default.png\" /\u003e |\n| -------------------- | ------------------------------------------------------------ |\n| **Bold**             | \u003cimg width=\"300\" src=\"docs/readLessTextStyle_bold.png\" /\u003e |\n| **Italic**           | \u003cimg width=\"300\" src=\"docs/readLessTextStyle_italic.png\" /\u003e |\n\n#### `readLessTextUnderline` (View only)\n\n| **false (default)** | \u003cimg width=\"300\" src=\"docs/readLessTextUnderline_default.png\" /\u003e |\n| ------------------- | ------------------------------------------------------------ |\n| **true**            | \u003cimg width=\"300\" src=\"docs/readLessTextUnderline_true.png\" /\u003e |\n\n#### `readLessTextDecoration` (Compose only)\n\n| **`null` (default)**  | \u003cimg width=\"300\" src=\"docs/readLessTextUnderline_default.png\" /\u003e |\n|-----------------------| ------------------------------------------------------------ |\n| **`TextDecoration.Underline`** | \u003cimg width=\"300\" src=\"docs/readLessTextUnderline_true.png\" /\u003e |\n\n---\n\n### Attributes for toggle area\n\nThe toggle area is the red box in the following image.\n\n#### `readMoreToggleArea` (View only)\n\n| **all (default)** | \u003cimg width=\"300\" src=\"docs/readMoreToggleArea_all.png\" /\u003e  |\n|-------------------|------------------------------------------------------------|\n| **more**          | \u003cimg width=\"300\" src=\"docs/readMoreToggleArea_more.png\" /\u003e |\n| **none**          | \u003cimg width=\"300\" src=\"docs/readMoreToggleArea_none.png\" /\u003e |\n\n#### `toggleArea` (Compose only)\n\n| **All (default)** | \u003cimg width=\"300\" src=\"docs/toggleArea_all.png\" /\u003e  |\n|-------------------|---------------------------------------------------------------|\n| **More**          | \u003cimg width=\"300\" src=\"docs/toggleArea_more.png\" /\u003e |\n\n## Snapshots\n\nIf you want to check the version currently in development, you can use the [snapshot versions](https://s01.oss.sonatype.org/content/repositories/snapshots/com/webtoonscorp/android/).\n\nThe snapshot versions are updated on every commit to `main` branch.\n\n```groovy\nrepositories {\n    maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots' }\n}\n\ndependencies {\n    // Check the latest SNAPSHOT version from the link above\n    classpath 'com.webtoonscorp.android:readmore-view:XXX-SNAPSHOT'\n}\n```\n\n## License\n\n```\nCopyright 2022 NAVER Webtoon\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n[compose]: https://developer.android.com/jetpack/compose\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebtoon%2Freadmoretextview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebtoon%2Freadmoretextview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebtoon%2Freadmoretextview/lists"}