{"id":321525,"date":"2021-04-15T21:00:30","date_gmt":"2021-04-15T21:00:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=321525"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=321525","title":{"rendered":"\u0421\u0442\u0438\u043b\u0438\u0437\u0443\u044f \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412\u043e\u0442 \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0421\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435, \u0431\u043e\u043b\u044c\u0448\u043e\u0435, \u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0435. \u041e\u0431\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u0441\u0442\u0438\u043b\u0435\u0439, \u043d\u043e \u0431\u0435\u0437 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043a\u0430; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0431\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438\u0437 AppCompat, \u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u0438 \u0442\u0435\u043c\u0443 \u0438\u0437 Material Design Components (MDC) \u0438 \u043f\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418 \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 redesign. \u0410 \u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u043e\u0431\u0449\u0430\u044f \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0430. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u043e\u0432\u044b\u0435, \u0448\u0440\u0438\u0444\u0442\u044b \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u0446\u0432\u0435\u0442\u0430 (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0445) \u0434\u0440\u0443\u0433\u0438\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c \u043d\u0430 MDC.  <\/p>\n<p>\u041d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>Redesign \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u043a \u044d\u043a\u0440\u0430\u043d\u044b \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c, \u0442\u0430\u043a \u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0432\u0438\u0434\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0426\u0432\u0435\u0442\u0430 \u0438 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043d\u043e\u0432\u043e\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 MDC. \u0425\u043e\u0442\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0445\u043e\u0436\u0438 <\/p>\n<\/li>\n<li>\n<p>Presentation \u0441\u043b\u043e\u0439 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 ui \u043c\u043e\u0434\u0443\u043b\u0438. \u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0431\u0435\u0437 \u0441\u0442\u0438\u043b\u0435\u0439, \u0434\u043b\u044f \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0442\u0430\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0437\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b: \u0446\u0432\u0435\u0442\u0430, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0442\u0438\u043b\u0438, \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435<\/p>\n<\/li>\n<li>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u043b\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u043c\u0438 ui \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0442\u0438\u043b\u044f\u043c\u0438, \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c. \u0410 \u043f\u0440\u0438 MDC \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u044e\u0441\u044c \u043e\u043f\u044b\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438: \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u043d\u0430 MDC \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 ui \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c. \u0411\u043e\u043d\u0443\u0441\u043e\u043c &#8212; \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c69\/a17\/7d6\/c69a177d6f9f42cba4ff9e1c47b0e313.jpeg\" alt=\"\u043b\u0435\u0433\u043e \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0438\u043b\u0438\" title=\"\u043b\u0435\u0433\u043e \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0438\u043b\u0438\" width=\"1950\" height=\"1300\"><figcaption>\u043b\u0435\u0433\u043e \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0438\u043b\u0438<\/figcaption><\/figure>\n<h3>\u041f\u0440\u043e ui \u043c\u043e\u0434\u0443\u043b\u0438<\/h3>\n<p>\u0415\u0441\u0442\u044c ui \u043c\u043e\u0434\u0443\u043b\u0438. \u041e\u043d\u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041b\u0435\u0436\u0430\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e <strong>core-presentation<\/strong>. \u041e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u0435\u0445 ui \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0430\u044f gradle \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/690\/f71\/946\/690f71946f0fb4f5ce2ae6a1c7534b2d.png\" width=\"2084\" height=\"1292\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441. \u0410 \u043a\u0430\u043a \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c-\u0442\u043e? \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e ui \u043c\u043e\u0434\u0443\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u0435\u043c\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: <\/p>\n<pre><code class=\"xml\">&lt;resources&gt; \t&lt;!-- src --&gt; \t&lt;attr name = \"someUiModuleBackgroundSrc\" format = \"reference\" \/&gt; \t&lt;!-- string --&gt; \t&lt;attr name = \"someUiModuleTitleString\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleErrorString\" format = \"reference\" \/&gt; \t&lt;!-- textAppearance --&gt; \t&lt;attr name = \"someUiModuleTextAppearance1\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance2\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance3\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance4\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance5\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance6\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance7\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance8\" format = \"reference\" \/&gt; \t&lt;!-- color --&gt; \t&lt;attr name = \"someUiModuleColor1\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleColor2\" format = \"reference\" \/&gt; &lt;\/resources&gt;<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;androidx.appcompat.widget.AppCompatTextView \tandroid:background = \"?someUiModuleBackgroundSrc\" \tandroid:text = \"?someUiModuleErrorString\" \tandroid:textAppearance = \"?someUiModuleTextAppearance5\" \t... \t\/&gt;<\/code><\/pre>\n<h3>\u0411\u043b\u0438\u0436\u0435 \u043a &#171;\u0442\u0435\u043c\u0435&#187; (\u0441\u0442\u0438\u043b\u044e)<\/h3>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043b\u0430\u043d. \u041f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u043e\u0442 \u0442\u043e\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u044b\u0439. \u041f\u043b\u0430\u043d \u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445, \u0430 \u044f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0435\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f.<\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b:<\/p>\n<ul>\n<li>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a MDC \u0442\u0435\u043c\u0430 \u0443\u0436\u0435 \u0437\u0430\u0442\u044f\u043d\u0443\u0442\u0430, \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438\u0437 MDC. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e <strong>AppCompat<\/strong>&#8216;a. \u0418 \u0445\u043e\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c framework \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0438\u0437 <strong>MDC<\/strong>, \u044f\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435:<\/p>\n<pre><code class=\"xml\">&lt;TextView \t... \t\/&gt;&lt;!-- Bad --&gt;  &lt;androidx.appcompat.widget.AppCompatTextView \t... \t\/&gt;&lt;!-- Bad --&gt;  &lt;com.google.android.material.textview.MaterialTextView \t... \t\/&gt;&lt;!-- Good --&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (\u043a\u043b\u0430\u0441\u0441\u044b, \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b) \u043d\u043e\u0432\u043e\u0433\u043e ui \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <strong>v2<\/strong>)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0438\u043b\u044c &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c <strong>\u0432\u043d\u0435\u0448\u043d\u0438\u0439<\/strong> \u0432\u0438\u0434 View. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0430\u044f View \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0441\u0442\u0438\u043b\u0435\u043c (\u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 <code>style<\/code> \u0432 xml, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0441\u0442\u0438\u043b\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>defStyleAttr<\/code>), \u0438 <strong>\u0442\u043e\u043b\u044c\u043a\u043e<\/strong> \u044d\u0442\u043e\u0442 \u0441\u0442\u0438\u043b\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0435\u0451 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: <\/p>\n<pre><code class=\"xml\">&lt;!-- Good --&gt; &lt;com.google.android.material.appbar.MaterialToolbar \tstyle = \"?toolbarStyleV2\" \t\/&gt;  &lt;!-- Bad --&gt; &lt;com.google.android.material.appbar.MaterialToolbar \tandroid:background = \"?primaryColorV2\" \t\/&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u043b\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e <strong>\u0432\u043d\u0435\u0448\u043d\u0438\u0439<\/strong> \u0432\u0438\u0434. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"xml\">&lt;item name = \"filledTextInputStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.TextInputLayout.Filled&lt;\/item&gt; &lt;!-- Bad --&gt; &lt;item name = \"searchTextInputStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.TextInputLayout.Search&lt;\/item&gt; &lt;!-- Good --&gt; &lt;item name = \"blackOutlinedButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.BlackOutlined&lt;\/item&gt; &lt;!-- Bad --&gt; &lt;item name = \"primaryButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.Primary&lt;\/item&gt; &lt;!-- Good --&gt; &lt;item name = \"secondaryButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.Secondary&lt;\/item&gt; &lt;!-- Good --&gt; &lt;item name = \"textButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.Text&lt;\/item&gt; &lt;!-- Ok. Based on Figma component name --&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0442\u0438\u043b\u0435\u0439, \u043b\u0435\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <strong>core-presentation<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0438\u0442\u043e\u0433:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438. \u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043b\u0438\u0442\u0440, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0438 \u043b\u044e\u0431\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0430<\/p>\n<\/li>\n<li>\n<p>UI \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0438 \u043d\u043e\u0432\u043e\u0433\u043e ui \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430-\u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441\u0430<\/p>\n<\/li>\n<\/ul>\n<hr>\n<p>\u0412\u0440\u043e\u0434\u0435 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0438\u043b\u0438; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0439 \u043d\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432 \u044d\u0442\u0438\u0445 \u0441\u0442\u0438\u043b\u044f\u0445. \u041d\u043e \u0442\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435?<\/p>\n<p>\u0414\u0430. \u041d\u043e \u0440\u043e\u0432\u043d\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0440\u0432\u0435\u0448\u044c\u0441\u044f \u043d\u0430 <code>TextView<\/code>. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0437\u0434\u0435\u0441\u044c? \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u0436\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \u043c\u043d\u043e\u0433\u043e. \u041f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 <code>TextView<\/code> \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c. \u0412 \u0437\u0430\u0449\u0438\u0442\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0438\u0437 <a href=\"https:\/\/medium.com\/androiddevelopers\/material-theming-with-mdc-type-8c2013430247\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043f\u0440\u043e MDC<strong> <\/strong>\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 &#8212; \u0442\u043e\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c: <\/p>\n<blockquote>\n<p>While TextAppearance does support android:textColor, MDC tends to separate concerns by specifying this separately in the main widget styles  <\/p>\n<\/blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"xml\">&lt;item name = \"v2TextStyleGiftItemPrice\"&gt;@style\/V2.Widget.MyFancyApp.TextView.GiftItemPrice&lt;\/item&gt; &lt;item name = \"v2TextStyleGiftItemName\"&gt;@style\/V2.Widget.MyFancyApp.TextView.GiftItemName&lt;\/item&gt;  ...  &lt;style name = \"V2.Widget.MyFancyApp.TextView.GiftItemPrice\"&gt;     &lt;item name = \"android:textAppearance\"&gt;?v2TextAppearanceCaption1&lt;\/item&gt;     &lt;item name = \"android:textColor\"&gt;?v2ColorOnPrimary&lt;\/item&gt; &lt;\/style&gt; &lt;style name = \"V2.Widget.MyFancyApp.TextView.GiftItemName\"&gt;     &lt;item name = \"android:textAppearance\"&gt;?v2TextAppearanceCaption1&lt;\/item&gt;     &lt;item name = \"android:textColor\"&gt;?v2ColorOnPrimary&lt;\/item&gt;     &lt;item name = \"textAllCaps\"&gt;true&lt;\/item&gt;     &lt;item name = \"android:background\"&gt;?v2ColorPrimary&lt;\/item&gt; &lt;\/style&gt;  ...  &lt;com.google.android.material.textview.MaterialTextView \tstyle = \"?v2TextStyleGiftItemPrice\" \t... \t\/&gt;  &lt;com.google.android.material.textview.MaterialTextView \tstyle = \"?v2TextStyleGiftItemName\" \t... \t\/&gt;  <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u0435\u0442\u044c\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441\u0442\u0438\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441 <strong>v2 <\/strong>(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>primaryButtonStyleV2<\/code>), \u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 &#8212; \u043f\u0440\u0435\u0444\u0438\u043a\u0441 (<code>v2TextStyleGiftItemName<\/code>). \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u044d\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043f\u0440\u0438 \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 IDE.<\/p>\n<hr>\n<p>\u041f\u043e \u0438\u0442\u043e\u0433\u0443, \u043f\u043e\u0441\u043b\u0435 \u0442\u0430\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043e\u043a \u0444\u0430\u0439\u043b \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 \u0432 \u043d\u043e\u0432\u043e\u043c ui \u043c\u043e\u0434\u0443\u043b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;resources&gt; \t&lt;!-- \u041e\u0431\u0449\u0438\u0435 \u0441\u0442\u0438\u043b\u0438 --&gt; \t&lt;attr name = \"cardStyleV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"appBarStyleV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"toolbarStyleV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"primaryButtonStyleV2\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- \u0421\u0442\u0438\u043b\u0438 \u0434\u043b\u044f TextView --&gt; \t&lt;attr name = \"v2TextStyleGiftCategoryTitle\" format = \"reference\" \/&gt; \t&lt;attr name = \"v2TextStyleGiftItemPrice\" format = \"reference\" \/&gt; \t&lt;attr name = \"v2TextStyleSearchSuggestion\" format = \"reference\" \/&gt; \t&lt;attr name = \"v2TextStyleNoResultsTitle\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- \u0418\u043a\u043e\u043d\u043a\u0438 --&gt; \t&lt;attr name = \"ic16CreditV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"ic24CloseV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"ic48GiftSentV2\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- \u0421\u0442\u0440\u043e\u043a\u0438 --&gt; \t&lt;attr name = \"shopTitleStringV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"shopSearchHintStringV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"noResultsStringV2\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- styleable \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 View --&gt; \t&lt;declare-styleable name = \"ShopPriceSlider\"&gt; \t\t&lt;attr name = \"maxPrice\" format = \"integer\" \/&gt; \t&lt;\/declare-styleable&gt;  &lt;\/resources&gt;<\/code><\/pre>\n<p>\u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0437\u0430\u0448\u0438\u0442\u043e \u0432 \u0441\u0442\u0438\u043b\u0438. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u043a\u043e\u043d\u043a\u0438. \u041e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443, \u0430 \u043d\u0435 \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0432\u0438\u0434\u0443. <\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435, \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0448\u0438\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0438\u043b\u0438 \u0434\u043b\u044f <code>TextView<\/code>, \u043d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0443\u0436\u043d\u0430 \u0432 \u043a\u043e\u0434\u0435 (\u0438 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0438\u043b\u044c \u0435\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f).<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u043a\u043e\u043d\u043e\u043a, \u0442\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043f\u043e\u0434 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438. \u0412\u0441\u0435 \u043d\u0430 \u0441\u0442\u0438\u043b\u044f\u0445.<\/p>\n<p>\u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 <code>android:background<\/code>, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430? \u0426\u0432\u0435\u0442 \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430 \u0442\u0430\u043c \u043a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c. \u041e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0421\u043f\u043e\u0439\u043b\u0435\u0440 &#8212; \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0438\u043b\u0438. <\/p>\n<hr>\n<p> \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0438\u043b\u0435\u0439:<\/p>\n<pre><code class=\"xml\">&lt;style name = \"V2.Widget.MyFancyApp.TextView.GiftItemName\"&gt;     &lt;item name = \"android:textAppearance\"&gt;?v2TextAppearanceCaption1&lt;\/item&gt;     &lt;item name = \"android:textColor\"&gt;?v2ColorOnPrimary&lt;\/item&gt; &lt;\/style&gt;   &lt;style name = \"V2.Widget.MyFancyApp.Button.Primary\" parent = \"Widget.MaterialComponents.Button\"&gt; \t... &lt;\/style&gt;  &lt;style name = \"V2.Widget.MyFancyApp.Button.Primary.Price\"&gt; \t... \t&lt;item name = \"icon\"&gt;?ic16CreditV2&lt;\/item&gt; &lt;\/style&gt;<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 (<code>android:textAppearance<\/code>) \u0438 \u0446\u0432\u0435\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0422\u0430\u043a\u0436\u0435 \u0438 \u0438\u043a\u043e\u043d\u043a\u0438. \u0418 \u044d\u0442\u043e \u0432\u0441\u0435 \u0432 <strong>core-presentation<\/strong>, \u0433\u0434\u0435, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (\u0447\u0435\u0440\u0435\u0437 <code>@color\/<\/code>, <code>@style\/<\/code>, <code>@drawable\/<\/code>).  \u0422\u0430\u043a \u0437\u0430\u0447\u0435\u043c \u0436\u0435?<\/p>\n<p>\u041e\u0442\u0432\u0435\u0442: \u0434\u043b\u044f \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>\u0422\u0435\u043c\u043d\u0430\u044f (\u0438\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e \u043f\u0430\u043b\u0438\u0442\u0440\u0435) \u0442\u0435\u043c\u0430. \u0412 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435<\/p>\n<\/li>\n<li>\n<p>&#171;\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435&#187; \u0442\u0435\u043c\u044b (Halloween, Christmas, Easter \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435). \u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0438\u043a\u043e\u043d\u043a\u0438 \u0438 \u0448\u0440\u0438\u0444\u0442\u044b \u043f\u043e\u0434 \u0441\u0430\u043c\u0443 \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443. \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u043c\u044b, &#8212; \u0434\u0435\u043b\u043e \u0442\u0440\u0435\u0442\u044c\u0435<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u0432\u0435\u0442\u044b<\/h3>\n<h4>MaterialThemeOverlay<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c <code>android:theme<\/code> \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 View, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0425\u043e\u0442\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u043d\u0435 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u0432\u0441\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u0432 <a href=\"https:\/\/medium.com\/@ataulm\/refactoring-themes-with-style-53af646f9eef\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>\u041d\u043e \u043e\u0442\u0447\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0441\u0442\u043e\u0438\u0442, \u0432\u0435\u0434\u044c \u0438 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0435\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041c\u0435\u043d\u044f\u0435\u043c <code>android:theme<\/code> \u043d\u0430 <code>materialThemeOverlay<\/code>, \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0447\u0435\u0440\u0435\u0437 <code>MaterialThemeOverlay.wrap(...)<\/code> \u0438 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u0432 xml:<\/p>\n<pre><code class=\"xml\">&lt;item name = \"achievementLevelBarStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.AchievementLevelBar&lt;\/item&gt; \t\t &lt;style name = \"V2.Widget.MyFancyApp.AchievementLevelBar\" parent = \"\"&gt; \t&lt;item name = \"materialThemeOverlay\"&gt;@style\/V2.ThemeOverlay.MyFancyApp.AchievementLevelBar&lt;\/item&gt; &lt;\/style&gt;<\/code><\/pre>\n<p>\u0421\u0430\u043c\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f View:<\/p>\n<pre><code class=\"kotlin\">class AchievementLevelBar @JvmOverloads constructor( \tcontext: Context, \tattrs: AttributeSet? = null, \tdefStyleAttr: Int = R.attr.achievementLevelBarStyleV2 ) : LinearLayoutCompat(MaterialThemeOverlay.wrap(context, attrs, defStyleAttr, 0), attrs, defStyleAttr) { \tinit { \t\tView.inflate(context, R.layout.achievement_level_bar, this) \t\t... \t}  \t... }<\/code><\/pre>\n<p>\u0418 \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0410 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0432 <code>init {}<\/code> \u0431\u043b\u043e\u043a\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c <code>context<\/code>, \u0430 \u043d\u0435 \u0441 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044b\u043c. \u041e\u0442\u0441\u044e\u0434\u0430 \u0432\u044b\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: <strong>\u043d\u0438\u043a\u043e\u0433\u0434\u0430 <\/strong>\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 <code>context<\/code> \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 <code>materialThemeOverlay<\/code> \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e <code>context <\/code>\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <code>getContext()<\/code>. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043a\u0443\u0441\u043e\u043a <code>MaterialButton<\/code> \u0437\u0434\u0435\u0441\u044c:<\/p>\n<pre><code class=\"java\">  public MaterialButton(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {     super(wrap(context, attrs, defStyleAttr, DEF_STYLE_RES), attrs, defStyleAttr);     \/\/ Ensure we are using the correctly themed context rather than the context that was passed in.     context = getContext();<\/code><\/pre>\n<p>(\u0410 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 Kotlin, \u0442\u043e Lint \u0431\u0443\u0434\u0435\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 name shadowing. \u0413\u0440\u0443\u0441\u0442\u044c)<\/p>\n<h4>Light status bar<\/h4>\n<p>\u0423 \u043d\u0430\u0441 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0438 \u043f\u043e\u0434 status bar \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f <code>StatusBarView<\/code>. \u0412 \u0438\u0434\u0435\u0430\u043b\u0435, \u0442\u0430\u043a\u043e\u0439 \u0448\u0442\u0443\u043a\u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <a href=\"https:\/\/habr.com\/ru\/company\/surfstudio\/blog\/464373\/\" rel=\"noopener noreferrer nofollow\">edge-to-edge<\/a>), \u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0414\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u043c\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c.<\/p>\n<p>\u0422\u0430\u043a \u0432\u043e\u0442, \u0432 \u0441\u0442\u0430\u0440\u043e\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u0435 status bar \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e translucent. \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442: \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0442\u0435\u043c\u043d\u044b\u0439 overlay (\u043f\u0440\u0438\u0447\u0435\u043c \u0432\u0435\u0437\u0434\u0435 \u0440\u0430\u0437\u043d\u044b\u0439), \u0430 \u0446\u0432\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 &#8212; \u0431\u0435\u043b\u044b\u0439 \u0438\u043b\u0438 \u043e\u043a\u043e\u043b\u043e \u0442\u043e\u0433\u043e. \u0412 \u043d\u043e\u0432\u043e\u043c \u0436\u0435 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 status bar \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u0435\u0442\u043b\u044b\u043c (light): \u0441\u043e \u0441\u0432\u0435\u0442\u043b\u044b\u043c background \u0438 \u0442\u0435\u043c\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e8\/f97\/8e7\/8e8f978e7086dafe418b48703b9f38a6.png\" alt=\"\u0421\u043b\u0435\u0432\u0430 - translucent; \u0441\u043f\u0440\u0430\u0432\u0430 - light\" title=\"\u0421\u043b\u0435\u0432\u0430 - translucent; \u0441\u043f\u0440\u0430\u0432\u0430 - light\" width=\"750\" height=\"94\"><figcaption>\u0421\u043b\u0435\u0432\u0430 &#8212; translucent; \u0441\u043f\u0440\u0430\u0432\u0430 &#8212; light<\/figcaption><\/figure>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c light status bar \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 translucent \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e <code>StatusBarView<\/code>. \u041d\u044e\u0430\u043d\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 light status bar \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 23\u044f \u0432\u0435\u0440\u0441\u0438\u044f SDK (\u0438\u043b\u0438 \u0432\u044b\u0448\u0435). \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0447\u0442\u043e \u043d\u0438\u0436\u0435, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 translucent status bar (\u0438\u0434\u0435\u044f \u0432\u0437\u044f\u0442\u0430 <a href=\"https:\/\/medium.com\/@SindkarP\/support-for-lollipop-devices-while-using-windowlightstatusbar-362777886393\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>)<\/p>\n<\/li>\n<li>\n<p>Translucent status bar \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u043b\u0430\u0433\u0430 <code>FLAG_TRANSLUCENT_STATUS<\/code>;<em> <\/em>overlay \u0431\u0435\u0437 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 (\u0434\u043b\u044f light) &#8212; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS<\/code> <\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044f\u0442\u044c \u0446\u0432\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 <a href=\"https:\/\/github.com\/nickbutcher\/plaid\/blob\/main\/core\/src\/main\/java\/io\/plaidapp\/core\/util\/ViewUtils.java#L113\" rel=\"noopener noreferrer nofollow\">\u043c\u0435\u0442\u043e\u0434\u044b<\/a>:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"kotlin\">fun setLightStatusBar() { \tif (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) { \t\tvar flags = window.decorView.systemUiVisibility \t\tflags = flags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR \t\twindow.decorView.systemUiVisibility = flags \t} }  fun clearLightStatusBar() { \tif (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) { \t\tvar flags = window.decorView.systemUiVisibility \t\tflags = flags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() \t\twindow.decorView.systemUiVisibility = flags \t} }<\/code><\/pre>\n<ul>\n<li>\n<p>\u0411\u0435\u0437 <code>FLAG_TRANSLUCENT_STATUS<\/code> \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f <code>StatusBarView<\/code> \u043d\u0435 \u0437\u0430\u043b\u0430\u0437\u0438\u0442 \u043f\u043e\u0434 status bar. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: <\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"kotlin\">class StatusBarView @JvmOverloads constructor( \tcontext: Context, \tattrs: AttributeSet? = null, \tdefStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { \tinit { \t\t... \t\tsystemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN \t} }<\/code><\/pre>\n<ul>\n<li>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e <code>StatusBarView<\/code> \u0434\u043b\u044f light status bar, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 <code>statusBarColor<\/code><\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u0441\u0442\u0438\u043b\u044f\u043c, \u0432\u0441\u044e \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441 light \/ translucent status bar \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0448\u0438\u0442\u044c \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>StatusBarView<\/code><\/p>\n<\/li>\n<\/ul>\n<h4>Color State List (CSL)<\/h4>\n<p>\u0412 MDC <a href=\"https:\/\/medium.com\/androiddevelopers\/material-theming-with-mdc-color-860dbba8ce2f\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043f\u0440\u043e \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \u043e\u0442\u0442\u0435\u043d\u043a\u043e\u0432 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0446\u0432\u0435\u0442\u0430 \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c CSL. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 23\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 SDK \u0434\u043b\u044f CSL \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0418 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>android:alpha<\/code>.  \u0410 \u0435\u0441\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043b\u044e\u0431\u043e\u0439 \u0446\u0432\u0435\u0442 \u0441 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e. <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<br \/><strong>color\/v2_on_background_20.xml<\/strong><\/p>\n<pre><code class=\"xml\">&lt;selector xmlns:android = \"http:\/\/schemas.android.com\/apk\/res\/android\"&gt; \t&lt;item android:alpha = \"0.20\" android:color = \"?v2ColorOnBackground\" \/&gt; &lt;\/selector&gt;<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0447\u0435\u0440\u0435\u0437 <code>@color\/<\/code> . \u041c\u043e\u0449\u044c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 CSL \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0446\u0432\u0435\u0442\u0430. \u0427\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 <code>v2ColorOnBackground<\/code> \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0411\u0435\u0437 CSL \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043b\u0435\u0437\u0442\u044c \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e <code>v2ColorOnBackground<\/code> \u0430\u043d\u0430\u043b\u043e\u0433 \u0441 20% \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e:<\/p>\n<pre><code class=\"xml\">&lt;color name = \"black\"&gt;#000000&lt;\/color&gt; &lt;!-- v2ColorOnBackground --&gt; &lt;color name = \"black_20\"&gt;#33000000&lt;\/color&gt; &lt;!-- v2ColorOnBackground 20% opacity --&gt;<\/code><\/pre>\n<p>\u0425\u043e\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0435 \u0438 \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0440\u0430\u043d\u0435\u0435, \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 23\u044f \u0432\u0435\u0440\u0441\u0438\u044f SDK \u0438 \u0432\u044b\u0448\u0435. \u041d\u043e \u0432\u043e\u043e\u0431\u0449\u0435, \u0434\u043b\u044f MDC \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0438 \u0441 21\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u043d\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0439 CSL \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 View \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430), \u0442\u043e \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0442\u043e\u0434 MaterialResources.getColorStateList(). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e Restricted API<s>, \u043d\u043e \u043a\u043e\u0433\u043e \u044d\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u043e<\/s><\/p>\n<\/li>\n<li>\n<p>CSL \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>android:background<\/code> \u0438 \u0441\u0445\u043e\u0436\u0438\u0445. \u041d\u043e \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a: <\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"xml\">&lt;style name = \"V2.Widget.MyFancyApp.Divider\" parent = \"\"&gt; \t&lt;item name = \"android:background\"&gt;@drawable\/v2_rect&lt;\/item&gt; \t&lt;item name = \"android:backgroundTint\"&gt;@color\/v2_on_background_15&lt;\/item&gt; \t... &lt;\/style&gt;<\/code><\/pre>\n<h4>\u041f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 \u0438 android:background<\/h4>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043a \u0434\u0435\u043b\u0443. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 <code>&lt;\/shape&gt;<\/code> \u0447\u0435\u0440\u0435\u0437 xml. \u0412\u043e\u0442 <strong>v2_rect.xml<\/strong> \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435 &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.  MDC \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e. \u0418 \u0432\u0441\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442.<\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 <code>ShapeableImageView<\/code> (\u043d\u0443 \u0438\u043b\u0438 \u043d\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 <code>MaterialCardView<\/code>)? \u0417\u0434\u0435\u0441\u044c \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435. \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"xml\">&lt;com.google.android.material.imageview.ShapeableImageView \tstyle = \"?shimmerStyleV2\"   ... \t\/&gt;  &lt;item name = \"shimmerStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Shimmer&lt;\/item&gt;  &lt;style name = \"V2.Widget.MyFancyApp.Shimmer\"&gt; \t&lt;item name = \"srcCompat\"&gt;@drawable\/v2_rect&lt;\/item&gt; \t&lt;item name = \"tint\"&gt;@color\/v2_on_background_15&lt;\/item&gt; \t&lt;item name = \"shapeAppearance\"&gt;@style\/V2.ShapeAppearance.MyFancyApp.SmallComponent.Shimmer&lt;\/item&gt; &lt;\/style&gt;<\/code><\/pre>\n<h4>\u0421\u0442\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ViewGroup<\/h4>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"xml\">&lt;com.google.android.material.appbar.AppBarLayout \tstyle = \"?appBarStyleV2\" \t... \t&gt;  \t&lt;my.magic.path.StatusBarView \t\tstyle = \"?statusBarStyleV2\" \t\t... \t\t\/&gt;  \t&lt;com.google.android.material.appbar.MaterialToolbar \t\tstyle = \"?toolbarStyleV2\" \t\t... \t\t\/&gt; &lt;\/com.google.android.material.appbar.AppBarLayout&gt;<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435. \u0423\u0447\u0442\u0435\u043c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0442\u0440\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441\u0442\u0438\u043b\u044f. <\/p>\n<p>\u0412\u0434\u0440\u0443\u0433 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d. \u041d\u0430 \u043d\u0435\u043c \u0432\u0441\u0435 \u0442\u0440\u0438 \u0441\u0442\u0438\u043b\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f. \u0412\u043e\u043f\u0440\u043e\u0441: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 &#8212; \u043e\u0434\u0438\u043d, \u0434\u043b\u044f <code>AppBarLayout<\/code>(\u043d\u0430\u0437\u043e\u0432\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>secondaryAppBarStyleV2<\/code> ). \u0414\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0435\u0441\u0442\u044c <strong>ThemeOverlay<\/strong>:<\/p>\n<pre><code class=\"xml\">&lt;item name = \"secondaryAppBarStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.AppBarLayout.Secondary&lt;\/item&gt;  &lt;style name = \"V2.Widget.MyFancyApp.AppBarLayout.Secondary\"&gt; \t&lt;item name = \"materialThemeOverlay\"&gt;@style\/V2.ThemeOverlay.MyFancyApp.AppBarLayout.Secondary&lt;\/item&gt; \t... &lt;\/style&gt;  &lt;style name = \"V2.ThemeOverlay.MyFancyApp.AppBarLayout.Secondary\" parent = \"\"&gt; \t&lt;item name = \"statusBarStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.StatusBar.Secondary&lt;\/item&gt; \t&lt;item name = \"toolbarStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Toolbar.Secondary&lt;\/item&gt; &lt;\/style&gt;<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439, \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043a \u043b\u044e\u0431\u043e\u0439 ViewGroup.  \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 View. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u043a\u0430\u044f-\u0442\u043e View (\u0438 \u0435\u0435 \u0441\u0442\u0438\u043b\u044c) \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 ViewGroup, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0435\u0435 \u0441\u0442\u0438\u043b\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u0435\u043c\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 <strong>ThemeOverlay <\/strong>ViewGroup.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/da0\/8a1\/30c\/da08a130cc03a7542e66c1092c5e13c5.png\" width=\"1408\" height=\"1004\"><figcaption><\/figcaption><\/figure>\n<h4>MaterialToolbar \u0438 Toolbar \u0438\u0437 AppCompat<\/h4>\n<p>\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043c\u043d\u043e\u0433\u0438\u0435 framework \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043f\u0440\u0438 inflate \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0437 MDC. \u0427\u0442\u043e\u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438 \u0438\u0437 MDC, \u043f\u0440\u0438 \u0437\u0430\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u043c\u044b (\u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430) \u0432\u0441\u0435 framework \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438 \u0438\u0437 AppCompat. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: <\/p>\n<pre><code class=\"xml\">&lt;!-- \u0411\u044b\u043b\u043e --&gt; &lt;Toolbar ... \/&gt;  &lt;!-- \u0421\u0442\u0430\u043b\u043e --&gt; &lt;androidx.appcompat.widget.Toolbar \t... \t\/&gt; <\/code><\/pre>\n<p>\u0418 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e-\u0442\u0430\u043a\u0438 \u0441\u0435\u0431\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u0432 \u043d\u043e\u0432\u044b\u0445 \u0441\u043a\u0440\u0438\u043d\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>MaterialToolbar<\/code> , \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 &#8212; <code>Toolbar<\/code>\u0438\u0437 AppCompat. <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043d\u0438\u043a \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0431\u0430\u0433. \u0414\u043b\u044f \u0441\u0442\u0438\u043b\u044f <code>MaterialToolbar<\/code> \u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>navigationIconTint<\/code>. \u042d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f <code>Toolbar<\/code>\u0438\u0437 AppCompat. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043d\u0430 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439, navigationIcon \u0432 <code>Toolbar<\/code>\u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043a\u0440\u0430\u0441\u0438\u043b\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>navigationIconTint<\/code>. \u041f\u043e\u043c\u043e\u0433 \u043b\u0438\u0448\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u043d\u0430 <code>MaterialToolbar<\/code>.<\/p>\n<h4>\u0421\u0442\u0438\u043b\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b<\/h4>\n<p>\u0412\u043e\u0442 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0432 Material Design Guidelines, \u043a\u0430\u043a Dense text fields. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e <code>TextInputLayout<\/code>\u0441 \u0432\u044b\u0441\u043e\u0442\u043e\u0439 \u0432 40dp. \u0415\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u0434 \u043d\u0435\u0433\u043e (<code>Widget.MaterialComponents.TextInputLayout.*.Dense<\/code>). \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 (\u0432 Guidelines) \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0438\u043a\u043e\u043d\u043e\u043a (\u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435) \u043d\u0435\u0442; \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439. <\/p>\n<p>\u0411\u0435\u0440\u0435\u043c <code>TextInputLayout<\/code>, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u043c\u0443 Dense \u0441\u0442\u0438\u043b\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c start icon \u0438&#8230; \u044d\u0442\u043e \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e, \u043d\u0435 Dense \u0441\u0442\u0438\u043b\u044f. \u041a\u043e\u043f\u0430\u0435\u043c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0442\u043e\u0433\u043e, \u0430 \u043a\u0430\u043a \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u0432 40dp. \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f \u043d\u0430 \u043b\u0443\u0447\u0448\u0435\u0435, \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u044f\u0445 \u0432\u044b\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u0432 0 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 <code>padding<\/code>. \u041d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. <\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432 <code>design_text_input_start_icon.xml<\/code>, \u0433\u0434\u0435 \u0434\u043b\u044f start icon \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432 48dp. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043b\u044f <code>TextInputLayout<\/code> 40dp \u0432 <code>android:layout_height<\/code>, \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e. <\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0442\u0438\u043b\u0438. Dense &#8212; \u044d\u0442\u043e \u043f\u0440\u043e \u0441\u0442\u0438\u043b\u044c. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, <code>android:layout_height<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u0435\u0436\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0438\u043b\u044f. \u0410 \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <code>TextInputLayout<\/code>\u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u0442\u0438\u043b\u0435\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u0438\u043b\u0438\u0442\u044c <code>android:layout_height<\/code> \u0438\u0437 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 (<a href=\"https:\/\/medium.com\/androiddevelopers\/android-styling-themes-overlay-1ffd57745207\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0432\u0435\u0442<\/a> \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a):<\/p>\n<pre><code class=\"xml\">&lt;item name = \"searchTextInputStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.TextInputLayout.Search&lt;\/item&gt;  &lt;style name = \"V2.Widget.MyFancyApp.TextInputLayout.Search\" parent = \"Widget.MaterialComponents.TextInputLayout.FilledBox.Dense\"&gt; \t&lt;item name = \"android:layout_height\"&gt;40dp&lt;\/item&gt; \t... &lt;\/style&gt;   &lt;!-- \u041d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 --&gt; &lt;com.google.android.material.textfield.TextInputLayout \tstyle = \"?searchTextInputStyleV2\" \tandroid:layout_width = \"match_parent\" \tandroid:layout_height = \"wrap_content\" \t\/&gt;    &lt;!-- \u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 --&gt; &lt;com.google.android.material.textfield.TextInputLayout \tstyle = \"?searchTextInputStyleV2\" \tandroid:layout_width = \"match_parent\" \t\/&gt;<\/code><\/pre>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0430\u0433 \u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0442\u0430\u043a\u043e\u0433\u043e workaround \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c.<\/p>\n<hr>\n<p>\u041a\u0430\u043a \u043f\u043e \u043c\u043d\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041e\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u043d\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 ui \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0443\u0434\u0430 \u0432\u0435\u0441\u043e\u043c\u0435\u0439.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443. \u042d\u0442\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/552486\/\"> https:\/\/habr.com\/ru\/post\/552486\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412\u043e\u0442 \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0421\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435, \u0431\u043e\u043b\u044c\u0448\u043e\u0435, \u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0435. \u041e\u0431\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u0441\u0442\u0438\u043b\u0435\u0439, \u043d\u043e \u0431\u0435\u0437 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043a\u0430; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0431\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438\u0437 AppCompat, \u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u0438 \u0442\u0435\u043c\u0443 \u0438\u0437 Material Design Components (MDC) \u0438 \u043f\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418 \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 redesign. \u0410 \u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u043e\u0431\u0449\u0430\u044f \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0430. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u043e\u0432\u044b\u0435, \u0448\u0440\u0438\u0444\u0442\u044b \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u0446\u0432\u0435\u0442\u0430 (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0445) \u0434\u0440\u0443\u0433\u0438\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c \u043d\u0430 MDC.  <\/p>\n<p>\u041d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>Redesign \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u043a \u044d\u043a\u0440\u0430\u043d\u044b \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c, \u0442\u0430\u043a \u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0432\u0438\u0434\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0426\u0432\u0435\u0442\u0430 \u0438 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043d\u043e\u0432\u043e\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 MDC. \u0425\u043e\u0442\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0445\u043e\u0436\u0438 <\/p>\n<\/li>\n<li>\n<p>Presentation \u0441\u043b\u043e\u0439 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 ui \u043c\u043e\u0434\u0443\u043b\u0438. \u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0431\u0435\u0437 \u0441\u0442\u0438\u043b\u0435\u0439, \u0434\u043b\u044f \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0442\u0430\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0437\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b: \u0446\u0432\u0435\u0442\u0430, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0442\u0438\u043b\u0438, \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435<\/p>\n<\/li>\n<li>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u043b\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u043c\u0438 ui \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0442\u0438\u043b\u044f\u043c\u0438, \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c. \u0410 \u043f\u0440\u0438 MDC \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u044e\u0441\u044c \u043e\u043f\u044b\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438: \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u043d\u0430 MDC \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 ui \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c. \u0411\u043e\u043d\u0443\u0441\u043e\u043c &#8212; \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f.<\/p>\n<figure class=\"full-width\"><figcaption>\u043b\u0435\u0433\u043e \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0438\u043b\u0438<\/figcaption><\/figure>\n<h3>\u041f\u0440\u043e ui \u043c\u043e\u0434\u0443\u043b\u0438<\/h3>\n<p>\u0415\u0441\u0442\u044c ui \u043c\u043e\u0434\u0443\u043b\u0438. \u041e\u043d\u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041b\u0435\u0436\u0430\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e <strong>core-presentation<\/strong>. \u041e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u0435\u0445 ui \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0430\u044f gradle \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441. \u0410 \u043a\u0430\u043a \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c-\u0442\u043e? \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e ui \u043c\u043e\u0434\u0443\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u0435\u043c\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: <\/p>\n<pre><code class=\"xml\">&lt;resources&gt; \t&lt;!-- src --&gt; \t&lt;attr name = \"someUiModuleBackgroundSrc\" format = \"reference\" \/&gt; \t&lt;!-- string --&gt; \t&lt;attr name = \"someUiModuleTitleString\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleErrorString\" format = \"reference\" \/&gt; \t&lt;!-- textAppearance --&gt; \t&lt;attr name = \"someUiModuleTextAppearance1\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance2\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance3\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance4\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance5\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance6\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance7\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleTextAppearance8\" format = \"reference\" \/&gt; \t&lt;!-- color --&gt; \t&lt;attr name = \"someUiModuleColor1\" format = \"reference\" \/&gt; \t&lt;attr name = \"someUiModuleColor2\" format = \"reference\" \/&gt; &lt;\/resources&gt;<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;androidx.appcompat.widget.AppCompatTextView \tandroid:background = \"?someUiModuleBackgroundSrc\" \tandroid:text = \"?someUiModuleErrorString\" \tandroid:textAppearance = \"?someUiModuleTextAppearance5\" \t... \t\/&gt;<\/code><\/pre>\n<h3>\u0411\u043b\u0438\u0436\u0435 \u043a &#171;\u0442\u0435\u043c\u0435&#187; (\u0441\u0442\u0438\u043b\u044e)<\/h3>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043b\u0430\u043d. \u041f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u043e\u0442 \u0442\u043e\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u044b\u0439. \u041f\u043b\u0430\u043d \u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445, \u0430 \u044f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0435\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f.<\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b:<\/p>\n<ul>\n<li>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a MDC \u0442\u0435\u043c\u0430 \u0443\u0436\u0435 \u0437\u0430\u0442\u044f\u043d\u0443\u0442\u0430, \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438\u0437 MDC. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e <strong>AppCompat<\/strong>&#8216;a. \u0418 \u0445\u043e\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c framework \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0438\u0437 <strong>MDC<\/strong>, \u044f\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435:<\/p>\n<pre><code class=\"xml\">&lt;TextView \t... \t\/&gt;&lt;!-- Bad --&gt;  &lt;androidx.appcompat.widget.AppCompatTextView \t... \t\/&gt;&lt;!-- Bad --&gt;  &lt;com.google.android.material.textview.MaterialTextView \t... \t\/&gt;&lt;!-- Good --&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (\u043a\u043b\u0430\u0441\u0441\u044b, \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b) \u043d\u043e\u0432\u043e\u0433\u043e ui \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <strong>v2<\/strong>)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0438\u043b\u044c &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c <strong>\u0432\u043d\u0435\u0448\u043d\u0438\u0439<\/strong> \u0432\u0438\u0434 View. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0430\u044f View \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0441\u0442\u0438\u043b\u0435\u043c (\u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 <code>style<\/code> \u0432 xml, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0441\u0442\u0438\u043b\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>defStyleAttr<\/code>), \u0438 <strong>\u0442\u043e\u043b\u044c\u043a\u043e<\/strong> \u044d\u0442\u043e\u0442 \u0441\u0442\u0438\u043b\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0435\u0451 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: <\/p>\n<pre><code class=\"xml\">&lt;!-- Good --&gt; &lt;com.google.android.material.appbar.MaterialToolbar \tstyle = \"?toolbarStyleV2\" \t\/&gt;  &lt;!-- Bad --&gt; &lt;com.google.android.material.appbar.MaterialToolbar \tandroid:background = \"?primaryColorV2\" \t\/&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u043b\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e <strong>\u0432\u043d\u0435\u0448\u043d\u0438\u0439<\/strong> \u0432\u0438\u0434. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"xml\">&lt;item name = \"filledTextInputStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.TextInputLayout.Filled&lt;\/item&gt; &lt;!-- Bad --&gt; &lt;item name = \"searchTextInputStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.TextInputLayout.Search&lt;\/item&gt; &lt;!-- Good --&gt; &lt;item name = \"blackOutlinedButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.BlackOutlined&lt;\/item&gt; &lt;!-- Bad --&gt; &lt;item name = \"primaryButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.Primary&lt;\/item&gt; &lt;!-- Good --&gt; &lt;item name = \"secondaryButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.Secondary&lt;\/item&gt; &lt;!-- Good --&gt; &lt;item name = \"textButtonStyleV2\"&gt;@style\/V2.Widget.MyFancyApp.Button.Text&lt;\/item&gt; &lt;!-- Ok. Based on Figma component name --&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0442\u0438\u043b\u0435\u0439, \u043b\u0435\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <strong>core-presentation<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0438\u0442\u043e\u0433:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438. \u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043b\u0438\u0442\u0440, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0438 \u043b\u044e\u0431\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0430<\/p>\n<\/li>\n<li>\n<p>UI \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0438 \u043d\u043e\u0432\u043e\u0433\u043e ui \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430-\u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441\u0430<\/p>\n<\/li>\n<\/ul>\n<hr>\n<p>\u0412\u0440\u043e\u0434\u0435 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0438\u043b\u0438; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0439 \u043d\u0443\u0436\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432 \u044d\u0442\u0438\u0445 \u0441\u0442\u0438\u043b\u044f\u0445. \u041d\u043e \u0442\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435?<\/p>\n<p>\u0414\u0430. \u041d\u043e \u0440\u043e\u0432\u043d\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0440\u0432\u0435\u0448\u044c\u0441\u044f \u043d\u0430 <code>TextView<\/code>. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0437\u0434\u0435\u0441\u044c? \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u0436\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \u043c\u043d\u043e\u0433\u043e. \u041f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 <code>TextView<\/code> \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c. \u0412 \u0437\u0430\u0449\u0438\u0442\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0438\u0437 <a href=\"https:\/\/medium.com\/androiddevelopers\/material-theming-with-mdc-type-8c2013430247\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043f\u0440\u043e MDC<strong> <\/strong>\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 &#8212; \u0442\u043e\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c: <\/p>\n<blockquote>\n<p>While TextAppearance does support android:textColor, MDC tends to separate concerns by specifying this separately in the main widget styles  <\/p>\n<\/blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"xml\">&lt;item name = \"v2TextStyleGiftItemPrice\"&gt;@style\/V2.Widget.MyFancyApp.TextView.GiftItemPrice&lt;\/item&gt; &lt;item name = \"v2TextStyleGiftItemName\"&gt;@style\/V2.Widget.MyFancyApp.TextView.GiftItemName&lt;\/item&gt;  ...  &lt;style name = \"V2.Widget.MyFancyApp.TextView.GiftItemPrice\"&gt;     &lt;item name = \"android:textAppearance\"&gt;?v2TextAppearanceCaption1&lt;\/item&gt;     &lt;item name = \"android:textColor\"&gt;?v2ColorOnPrimary&lt;\/item&gt; &lt;\/style&gt; &lt;style name = \"V2.Widget.MyFancyApp.TextView.GiftItemName\"&gt;     &lt;item name = \"android:textAppearance\"&gt;?v2TextAppearanceCaption1&lt;\/item&gt;     &lt;item name = \"android:textColor\"&gt;?v2ColorOnPrimary&lt;\/item&gt;     &lt;item name = \"textAllCaps\"&gt;true&lt;\/item&gt;     &lt;item name = \"android:background\"&gt;?v2ColorPrimary&lt;\/item&gt; &lt;\/style&gt;  ...  &lt;com.google.android.material.textview.MaterialTextView \tstyle = \"?v2TextStyleGiftItemPrice\" \t... \t\/&gt;  &lt;com.google.android.material.textview.MaterialTextView \tstyle = \"?v2TextStyleGiftItemName\" \t... \t\/&gt;  <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u0435\u0442\u044c\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441\u0442\u0438\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441 <strong>v2 <\/strong>(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>primaryButtonStyleV2<\/code>), \u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 &#8212; \u043f\u0440\u0435\u0444\u0438\u043a\u0441 (<code>v2TextStyleGiftItemName<\/code>). \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u044d\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043f\u0440\u0438 \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 IDE.<\/p>\n<hr>\n<p>\u041f\u043e \u0438\u0442\u043e\u0433\u0443, \u043f\u043e\u0441\u043b\u0435 \u0442\u0430\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043e\u043a \u0444\u0430\u0439\u043b \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 \u0432 \u043d\u043e\u0432\u043e\u043c ui \u043c\u043e\u0434\u0443\u043b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;resources&gt; \t&lt;!-- \u041e\u0431\u0449\u0438\u0435 \u0441\u0442\u0438\u043b\u0438 --&gt; \t&lt;attr name = \"cardStyleV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"appBarStyleV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"toolbarStyleV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"primaryButtonStyleV2\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- \u0421\u0442\u0438\u043b\u0438 \u0434\u043b\u044f TextView --&gt; \t&lt;attr name = \"v2TextStyleGiftCategoryTitle\" format = \"reference\" \/&gt; \t&lt;attr name = \"v2TextStyleGiftItemPrice\" format = \"reference\" \/&gt; \t&lt;attr name = \"v2TextStyleSearchSuggestion\" format = \"reference\" \/&gt; \t&lt;attr name = \"v2TextStyleNoResultsTitle\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- \u0418\u043a\u043e\u043d\u043a\u0438 --&gt; \t&lt;attr name = \"ic16CreditV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"ic24CloseV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"ic48GiftSentV2\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- \u0421\u0442\u0440\u043e\u043a\u0438 --&gt; \t&lt;attr name = \"shopTitleStringV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"shopSearchHintStringV2\" format = \"reference\" \/&gt; \t&lt;attr name = \"noResultsStringV2\" format = \"reference\" \/&gt;  \t...  \t&lt;!-- styleable \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 View --&gt; \t&lt;declare-styleable name = \"ShopPriceSlider\"&gt; \t\t&lt;attr name = \"maxPrice\" format = \"integer\" \/&gt; \t&lt;\/declare-styleable&gt;  &lt;\/resources&gt;<\/code><\/pre>\n<p>\u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0437\u0430\u0448\u0438\u0442\u043e \u0432 \u0441\u0442\u0438\u043b\u0438. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u043a\u043e\u043d\u043a\u0438. \u041e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443, \u0430 \u043d\u0435 \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0432\u0438\u0434\u0443. <\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435, \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0448\u0438\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0438\u043b\u0438 \u0434\u043b\u044f <code>TextView<\/code>, \u043d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0443\u0436\u043d\u0430 \u0432 \u043a\u043e\u0434\u0435 (\u0438 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0438\u043b\u044c \u0435\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f).<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u043a\u043e\u043d\u043e\u043a, \u0442\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043f\u043e\u0434 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438. \u0412\u0441\u0435 \u043d\u0430 \u0441\u0442\u0438\u043b\u044f\u0445.<\/p>\n<p>\u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 <code>android:background<\/code>, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430? \u0426\u0432\u0435\u0442 \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430 \u0442\u0430\u043c \u043a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c. \u041e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0421\u043f\u043e\u0439\u043b\u0435\u0440 &#8212; \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0438\u043b\u0438. <\/p>\n<hr>\n<p> \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0438\u043b\u0435\u0439:<\/p>\n<pre><code class=\"xml\">&lt;style name = \"V2.Widget.MyFancyApp.TextView.GiftItemName\"&gt;     &lt;item name = \"android:textAppearance\"&gt;?v2TextAppearanceCaption1&lt;\/item&gt;     &lt;item name = \"android:textColor\"&gt;?v2ColorOnPrimary&lt;\/item&gt; &lt;\/style&gt;   &lt;style name = \"V2.Widget.MyFancyApp.Button.Primary\" parent = \"Widget.MaterialComponents.Button\"&gt; \t... &lt;\/style&gt;  &lt;style name = \"V2.Widget.MyFancyApp.Button.Primary.Price\"&gt; \t... \t&lt;item name = \"icon\"&gt;?ic16CreditV2&lt;\/item&gt; &lt;\/style&gt;<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 (<code>android:textAppearance<\/code>) \u0438 \u0446\u0432\u0435\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0422\u0430\u043a\u0436\u0435 \u0438 \u0438\u043a\u043e\u043d\u043a\u0438. \u0418 \u044d\u0442\u043e \u0432\u0441\u0435 \u0432 <strong>core-presentation<\/strong>, \u0433\u0434\u0435, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (\u0447\u0435\u0440\u0435\u0437 <code>@color\/<\/code>, <code>@style\/<\/code>, <code>@drawable\/<\/code>).  \u0422\u0430\u043a \u0437\u0430\u0447\u0435\u043c \u0436\u0435?<\/p>\n<p>\u041e\u0442\u0432\u0435\u0442: \u0434\u043b\u044f \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>\u0422\u0435\u043c\u043d\u0430\u044f (\u0438\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e \u043f\u0430\u043b\u0438\u0442\u0440\u0435) \u0442\u0435\u043c\u0430. \u0412 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435<\/p>\n<\/li>\n<li>\n<p>&#171;\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/p>\n<\/li>\n<\/ul>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-321525","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/321525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=321525"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/321525\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=321525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=321525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=321525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}