1 line
34 KiB
JavaScript
1 line
34 KiB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{226:function(t,a,s){"use strict";s.r(a);var n=s(0),e=Object(n.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"recycler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#recycler","aria-hidden":"true"}},[t._v("#")]),t._v(" Recycler "),s("Badge",{attrs:{text:"3.0.0"}})],1),t._v(" "),s("LegacyWarning"),t._v(" "),s("MavenBadge",{attrs:{artifact:"recycler"}}),t._v(" "),t._m(0),t._v(" "),t._m(1),t._m(2),t._m(3),t._v(" "),t._m(4),t._m(5),t._v(" "),t._m(6),t._m(7),t._v(" "),t._m(8),t._m(9),t._v(" "),t._m(10),t._m(11),t._v(" "),t._m(12),t._m(13),t._v(" "),s("div",{staticClass:"tip custom-block"},[s("p",{staticClass:"custom-block-title"},[t._v("Tables")]),t._v(" "),s("p",[t._v("There is a standalone artifact that adds support for displaying markdown tables\nnatively via "),s("code",[t._v("TableLayout")]),t._v(". Please refer to its "),s("router-link",{attrs:{to:"/docs/v3/recycler-table/"}},[t._v("documentation")])],1)])],1)},[function(){var t=this.$createElement,a=this._self._c||t;return a("p",[this._v("This artifact allows displaying markdown in a set of Android widgets\ninside a RecyclerView. Can be useful when displaying lengthy markdown\ncontent or "),a("strong",[this._v("displaying certain markdown blocks inside specific widgets")]),this._v(".")])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token comment"}},[t._v("// create an adapter that will use a TextView for each block of markdown")]),t._v("\n"),s("span",{attrs:{class:"token comment"}},[t._v("// `createTextViewIsRoot` accepts a layout in which TextView is the root view")]),t._v("\n"),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" MarkwonAdapter adapter "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" \n MarkwonAdapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("createTextViewIsRoot")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("adapter_default_entry"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token comment"}},[t._v("// `create` method accepts a layout with TextView and ID of a TextView")]),t._v("\n"),s("span",{attrs:{class:"token comment"}},[t._v("// which allows wrapping a TextView inside another widget or combine with other widgets")]),t._v("\n"),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" MarkwonAdapter adapter "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" \n MarkwonAdapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("create")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("adapter_default_entry"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("text_view"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{attrs:{class:"token comment"}},[t._v("// initialize RecyclerView (LayoutManager, Decorations, etc)")]),t._v("\n"),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" RecyclerView recyclerView "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("obtainRecyclerView")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{attrs:{class:"token comment"}},[t._v("// set adapter")]),t._v("\nrecyclerView"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("setAdapter")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("adapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{attrs:{class:"token comment"}},[t._v("// obtain an instance of Markwon (register all required plugins)")]),t._v("\n"),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" Markwon markwon "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("obtainMarkwon")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{attrs:{class:"token comment"}},[t._v("// set markdown to be displayed")]),t._v("\nadapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("setMarkdown")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("markwon"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v('"# This is markdown!"')]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{attrs:{class:"token comment"}},[t._v("// NB, adapter does not handle updates on its own, please use")]),t._v("\n"),s("span",{attrs:{class:"token comment"}},[t._v("// whatever method appropriate for you.")]),t._v("\nadapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("notifyDataSetChanged")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,a=this._self._c||t;return a("p",[this._v("Initialized adapter above will use a TextView for each markdown block.\nIn order to tell adapter to render certain blocks differently a "),a("code",[this._v("builder")]),this._v(" can be used.\nFor example, let's render "),a("code",[this._v("FencedCodeBlock")]),this._v(" inside a "),a("code",[this._v("HorizontalScrollView")]),this._v(":")])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token comment"}},[t._v("// we still need to have a _default_ entry")]),t._v("\n"),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" MarkwonAdapter adapter "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v("\n MarkwonAdapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("builderTextViewIsRoot")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("adapter_default_entry"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("include")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("FencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("FencedCodeBlockEntry")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("build")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,a=this._self._c||t;return a("p",[this._v("where "),a("code",[this._v("FencedCodeBlockEntry")]),this._v(" is:")])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("FencedCodeBlockEntry")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("extends")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("MarkwonAdapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Entry")]),s("span",{attrs:{class:"token generics function"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("FencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FencedCodeBlockEntry"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Holder"),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v("\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Override")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Holder "),s("span",{attrs:{class:"token function"}},[t._v("createHolder")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" LayoutInflater inflater"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" ViewGroup parent"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("Holder")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("inflater"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("inflate")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("adapter_fenced_code_block"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" parent"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token boolean"}},[t._v("false")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Override")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("bindHolder")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" Markwon markwon"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" Holder holder"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" FencedCodeBlock node"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n markwon"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("setParsedMarkdown")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("holder"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("textView"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" markwon"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("render")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("node"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("Holder")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("extends")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("MarkwonAdapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Holder")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" TextView textView"),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("Holder")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" View itemView"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("super")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("itemView"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{attrs:{class:"token keyword"}},[t._v("this")]),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("textView "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("requireView")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("text_view"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,a=this._self._c||t;return a("p",[this._v("and its layout ("),a("code",[this._v("R.layout.adapter_fenced_code_block")]),this._v("):")])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-xml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-xml"}},[s("code",[s("span",{attrs:{class:"token prolog"}},[t._v('<?xml version="1.0" encoding="utf-8"?>')]),t._v("\n"),s("span",{attrs:{class:"token tag"}},[s("span",{attrs:{class:"token tag"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("HorizontalScrollView")]),t._v(" "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("xmlns:")]),t._v("android")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("http://schemas.android.com/apk/res/android"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("layout_width")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("match_parent"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("layout_height")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("wrap_content"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("clipChildren")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("false"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("clipToPadding")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("false"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("fillViewport")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("true"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("paddingLeft")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("16dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("paddingRight")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("16dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("scrollbar")]),s("span",{attrs:{class:"token style-attr language-css"}},[s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token attr-name"}},[t._v("Style")])]),s("span",{attrs:{class:"token punctuation"}},[t._v('="')]),s("span",{attrs:{class:"token attr-value"}},[t._v("outsideInset")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n\n "),s("span",{attrs:{class:"token tag"}},[s("span",{attrs:{class:"token tag"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("TextView")]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("id")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("@+id/text"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("layout_width")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("wrap_content"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("layout_height")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("wrap_content"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("background")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("#0f000000"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("fontFamily")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("monospace"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("lineSpacingExtra")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("2dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("paddingLeft")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("16dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("paddingTop")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("8dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("paddingRight")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("16dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("paddingBottom")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("8dip"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("textAppearance")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("?android:attr/textAppearanceMedium"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v("\n "),s("span",{attrs:{class:"token attr-name"}},[s("span",{attrs:{class:"token namespace"}},[t._v("android:")]),t._v("textSize")]),s("span",{attrs:{class:"token attr-value"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("14sp"),s("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("/>")])]),t._v("\n\n"),s("span",{attrs:{class:"token tag"}},[s("span",{attrs:{class:"token tag"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("</")]),t._v("HorizontalScrollView")]),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n")])])])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("p",[t._v("As we apply styling to "),s("code",[t._v("FencedCodeBlock")]),t._v(" "),s("em",[t._v("manually")]),t._v(", we no longer need\n"),s("code",[t._v("Markwon")]),t._v(" to apply styling spans for us, so "),s("code",[t._v("Markwon")]),t._v(" initialization could be:")])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" Markwon markwon "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" Markwon"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("builder")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("context"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("// your other plugins")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("usePlugin")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("AbstractMarkwonPlugin")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Override")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("configureVisitor")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" MarkwonVisitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Builder builder"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n builder"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("on")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("FencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("visitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" fencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token operator"}},[t._v("-")]),s("span",{attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("// we actually won't be applying code spans here, as our custom view will")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("// draw background and apply mono typeface")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("//")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("// NB the `trim` operation on literal (as code will have a new line at the end)")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" CharSequence code "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" visitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("configuration")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("syntaxHighlight")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("highlight")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("fencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("getInfo")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" fencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("getLiteral")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("trim")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n visitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("builder")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("append")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("code"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("build")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,a=this._self._c||t;return a("p",[this._v("Previously we have created a "),a("code",[this._v("FencedCodeBlockEntry")]),this._v(" but all it does is apply markdown to a TextView.\nFor such a case there is a "),a("code",[this._v("SimpleEntry")]),this._v(" that could be used instead:")])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" MarkwonAdapter adapter "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v("\n MarkwonAdapter"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("builderTextViewIsRoot")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("adapter_default_entry"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("include")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("FencedCodeBlock"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" SimpleEntry"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("create")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("adapter_fenced_code_block"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" R"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("text_view"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("build")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,a=this._self._c||t;return a("div",{staticClass:"tip custom-block"},[a("p",{staticClass:"custom-block-title"},[this._v("TIP")]),this._v(" "),a("p",[a("code",[this._v("SimpleEntry")]),this._v(" also takes care of "),a("em",[this._v("caching")]),this._v(" parsed markdown. So each node will be\nparsed only once and each subsequent adapter binding call will reuse previously cached markdown.")])])}],!1,null,null,null);e.options.__file="README.md";a.default=e.exports}}]); |