{"id":21823486,"url":"https://github.com/limedroid/xrichtext","last_synced_at":"2025-10-20T03:51:38.329Z","repository":{"id":42425232,"uuid":"72621238","full_name":"limedroid/XRichText","owner":"limedroid","description":"显示富文本的TextView","archived":false,"fork":false,"pushed_at":"2016-12-15T04:10:09.000Z","size":25372,"stargazers_count":456,"open_issues_count":16,"forks_count":66,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-31T06:07:47.607Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","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/limedroid.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-02T08:52:40.000Z","updated_at":"2025-03-23T08:41:41.000Z","dependencies_parsed_at":"2022-09-14T00:00:26.451Z","dependency_job_id":null,"html_url":"https://github.com/limedroid/XRichText","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXRichText","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXRichText/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXRichText/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXRichText/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/limedroid","download_url":"https://codeload.github.com/limedroid/XRichText/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608160,"owners_count":20965953,"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":[],"created_at":"2024-11-27T17:32:22.958Z","updated_at":"2025-10-20T03:51:33.299Z","avatar_url":"https://github.com/limedroid.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XRichText\n\n---\n\n[XRichText](https://github.com/limedroid/XRichText.git)是一个可以显示Html富文本的TextView。可以用于显示新闻、商品详情等场景。欢迎star、fork，提出意见。\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"art/xrichtext.gif\" alt=\"XRecyclerView\" /\u003e\n\u003c/p\u003e\n\n## 使用\n\n* Github : [XRichText](https://github.com/limedroid/XRichText.git)\n\n### step1 \n\n在根项目的`build.gradle`文件中添加\n\n```groovy\nallprojects {\n\t\trepositories {\n\t\t\t...\n\t\t\tmaven { url 'https://jitpack.io' }\n\t}\n}\n```\n\n### step2\n\n添加依赖\n\n```groovy\ndependencies {\n\t    compile 'com.github.limedroid:XRichText:v1.0.0'\n}\n```\n\n\n## 特别说明:\n**可以直接调用text方法显示html，其他的接口只是应对特殊场景的。**\n\n## 主要特性 \n\n* 自定义超链接link的点击\n* 自定义图片img的点击\n* 支持链式调用\n* 图片支持三种对齐方式(左对齐、居中、右对齐)\n* 支持在图片加载前对每张图片的url、width、height、对齐方式精细调整\n* 内置图片下载器\n* 可自定义图片下载器，如使用universal image loader、Picasso、Glide等\n\n## 实现原理\n\n* spanned\n* 线程池\n* 自定义ImageGetter\n\n## 示例\n```xml\n\u003ccn.droidlover.xrichtext.XRichText\n            android:id=\"@+id/richText\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:padding=\"16dp\" /\u003e\n```\n\n在Java中：\n```java\nrichText\n                .callback(new XRichText.BaseClickCallback() {\n\n                    @Override\n                    public boolean onLinkClick(String url) {\n                        showMsg(url);\n                        return true;\n                    }\n\n                    @Override\n                    public void onImageClick(List\u003cString\u003e urlList, int position) {\n                        super.onImageClick(urlList, position);\n                        showMsg(\"图片:\" + position);\n                    }\n\n                    @Override\n                    public void onFix(XRichText.ImageHolder holder) {\n                        super.onFix(holder);\n                        if (holder.getPosition() % 3 == 0) {\n                            holder.setStyle(XRichText.Style.LEFT);\n                        } else if (holder.getPosition() % 3 == 1) {\n                            holder.setStyle(XRichText.Style.CENTER);\n                        } else {\n                            holder.setStyle(XRichText.Style.RIGHT);\n                        }\n\n                        //设置宽高\n                        holder.setWidth(550);\n                        holder.setHeight(400);\n                    }\n                })\n               .imageDownloader(new ImageLoader() {\n                   @Override\n                   public Bitmap getBitmap(String url) throws IOException {\n                        return UILKit.getLoader().loadImageSync(url);\n                   }\n               })\n                .text(TEXT);\n```\n\n## api说明\n\n* onLinkClick(String url) 当点击超链接时触发，url为点击的url\n* onImageClick(List\u003cString\u003e urlList, int position) 当点击图片时触发，urlList为图片的url集合，position为被点击的位置，从0开始\n* onFix(XRichText.ImageHolder holder) 当图片加载前回调此方法，通过holder可以调整图片的src、width、height、style(对齐方式)\n* **设置html内容时，务必调用text方法**\n* imageDownloader(ImageLoader loader)可以自定义图片加载器,库中已有默认实现。可以根据项目情况定义加载器，如三方库UIL、Picasso等，只需实现ImageLoader接口就行。**getBitmap方法已经在线程池中，所以自定义loader时不必考虑线程问题.**\n* ClickCallback接口有默认实现类BaseClickCallback,可以直接使用此类重写需要的方法。\n\n\n\u003e 我的另一个项目: [**XDroid**](https://github.com/limedroid/XDroid) ， 一个轻量级的Android快速开发框架\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimedroid%2Fxrichtext","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimedroid%2Fxrichtext","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimedroid%2Fxrichtext/lists"}