{"id":627,"date":"2025-12-04T01:04:22","date_gmt":"2025-12-04T00:04:22","guid":{"rendered":"https:\/\/zajecia.tsadowski.pl\/?p=627"},"modified":"2025-12-04T13:14:33","modified_gmt":"2025-12-04T12:14:33","slug":"627","status":"publish","type":"post","link":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/","title":{"rendered":"Kszta\u0142ty, selektory i style w android studio"},"content":{"rendered":"<h2>Tworzenie kszta\u0142t\u00f3w (shape) w Android Studio \u2013 wprowadzenie<\/h2>\n<p>W Android Studio mo\u017cemy tworzy\u0107 w\u0142asne kszta\u0142ty w plikach XML umieszczonych w folderze <code>res\/drawable<\/code>. Kszta\u0142ty te s\u0142u\u017c\u0105 przede wszystkim jako t\u0142a element\u00f3w UI, takich jak <strong>TextView<\/strong>, <strong>LinearLayout<\/strong>, <strong>ImageView<\/strong>, <strong>CardView<\/strong>, a tak\u017ce jako elementy selektor\u00f3w (np. efekt klikni\u0119cia). Nie dzia\u0142aj\u0105 one domy\u015blnie na <code>&lt;Button\/&gt;<\/code>, poniewa\u017c Button korzysta z w\u0142asnego stylu systemowego \u2014 dlatego cz\u0119\u015bciej u\u017cywa si\u0119 ich z <code>&lt;android.widget.Button\/&gt;<\/code>. Kszta\u0142ty opisujemy za pomoc\u0105 elementu <code>&lt;shape&gt;<\/code>, a w jego wn\u0119trzu okre\u015blamy w\u0142a\u015bciwo\u015bci wizualne. Przyk\u0142ady takich w\u0142a\u015bciwo\u015bci to: <code>solid<\/code> (kolor wype\u0142nienia), <code>stroke<\/code> (obramowanie), <code>corners<\/code> (zaokr\u0105glenia), <code>padding<\/code> (wewn\u0119trzne marginesy), <code>size<\/code> (sta\u0142a szeroko\u015b\u0107 i wysoko\u015b\u0107), <code>gradient<\/code> (p\u0142ynne przej\u015bcie kolor\u00f3w), <code>shape<\/code> (rodzaj figury: rectangle\/oval\/line\/ring) oraz <code>innerRadius<\/code> i <code>thickness<\/code> przy pier\u015bcieniach. Dzi\u0119ki tym w\u0142a\u015bciwo\u015bciom mo\u017cemy tworzy\u0107 proste t\u0142a, zaokr\u0105glone przyciski, panele, kapsu\u0142ki, owalne pola, linie oddzielaj\u0105ce sekcje, a nawet gradientowe paski.<\/p>\n<hr \/>\n<h3>Przyk\u0142ad pliku w <code>res\/drawable\/rounded_box.xml<\/code> z wieloma w\u0142a\u015bciwo\u015bciami:<\/h3>\n<pre><code class=\"lang-xml language-xml xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\n&lt;shape xmlns:android=&quot;http:\/\/schemas.android.com\/apk\/res\/android&quot;\n    android:shape=&quot;rectangle&quot;&gt;\n    &lt;!-- 1. Kolor wype\u0142nienia --&gt;\n    &lt;solid android:color=&quot;#3F51B5&quot; \/&gt;\n\n    &lt;!-- 2. Obramowanie --&gt;\n    &lt;stroke\n        android:width=&quot;3dp&quot;\n        android:color=&quot;#1A237E&quot; \/&gt;\n\n    &lt;!-- 3. Zaokr\u0105glenia --&gt;\n    &lt;corners android:radius=&quot;16dp&quot; \/&gt;\n\n    &lt;!-- 4. Wewn\u0119trzne marginesy --&gt;\n    &lt;padding\n        android:left=&quot;12dp&quot;\n        android:top=&quot;8dp&quot;\n        android:right=&quot;12dp&quot;\n        android:bottom=&quot;8dp&quot; \/&gt;\n\n    &lt;!-- 5. Gradient (opcjonalny, nadpisze solid, je\u015bli u\u017cyty) --&gt;\n    &lt;!--\n    &lt;gradient\n        android:startColor=&quot;#3F51B5&quot;\n        android:endColor=&quot;#1A237E&quot;\n        android:angle=&quot;90&quot;\/&gt;\n    --&gt;\n\n    &lt;!-- 6. Rozmiar --&gt;\n    &lt;size\n        android:width=&quot;200dp&quot;\n        android:height=&quot;60dp&quot; \/&gt;\n\n&lt;\/shape&gt;<\/code><\/pre>\n<hr \/>\n<h2>W\u0142a\u015bciwo\u015bci kluczowe:<\/h2>\n<ol>\n<li><strong>android:shape<\/strong> \u2013 typ kszta\u0142tu: rectangle, oval, line, ring.<\/li>\n<li><strong>solid<\/strong> \u2013 kolor wype\u0142nienia t\u0142a.<\/li>\n<li><strong>stroke<\/strong> \u2013 obramowanie: grubo\u015b\u0107 + kolor.<\/li>\n<li><strong>corners<\/strong> \u2013 zaokr\u0105glenia rog\u00f3w (radius).<\/li>\n<li><strong>padding<\/strong> \u2013 marginesy wewn\u0119trzne (odst\u0119p mi\u0119dzy tekstem a brzegiem kszta\u0142tu).<\/li>\n<li><strong>size<\/strong> \u2013 ustalenie sta\u0142ej szeroko\u015bci i wysoko\u015bci elementu.<\/li>\n<li><strong>gradient<\/strong> \u2013 p\u0142ynne przej\u015bcie mi\u0119dzy kolorami (startColor, endColor, angle).<\/li>\n<li><strong>innerRadius \/ thickness<\/strong> \u2013 w\u0142a\u015bciwo\u015bci dla kszta\u0142tu typu \u201ering\u201d (pier\u015bcie\u0144).<\/li>\n<\/ol>\n<h2>Selektory (selector) w Android Studio \u2013 kilka stan\u00f3w elementu<\/h2>\n<p>Selektor (<code>selector<\/code>) to specjalny plik XML w folderze <code>res\/drawable<\/code>, kt\u00f3ry pozwala zmienia\u0107 wygl\u0105d elementu interfejsu w zale\u017cno\u015bci od jego stanu. Najcz\u0119\u015bciej u\u017cywa si\u0119 go do tworzenia efekt\u00f3w wizualnych dla &#8222;pseudo-przycisk\u00f3w&#8221;, czyli np. TextView pe\u0142ni\u0105cych rol\u0119 klikanych kafelk\u00f3w. W selektorze mo\u017cna zdefiniowa\u0107 wiele r\u00f3\u017cnych stan\u00f3w \u2014 nie tylko <code>pressed<\/code>. Typowe stany, kt\u00f3re mo\u017cna wykorzysta\u0107 to: <code>focused<\/code> (element wybrany np. klawiatur\u0105), <code>selected<\/code> (zaznaczony), <code>enabled<\/code> (w\u0142\u0105czony), <code>disabled<\/code> (wy\u0142\u0105czony), <code>checked<\/code> (zaznaczony w przypadku CheckBox \/ Switch), <code>activated<\/code> (aktywny w logice aplikacji) oraz <code>default<\/code> (gdy \u017caden stan nie pasuje). Ka\u017cdy stan wskazuje osobny plik kszta\u0142tu (<code>shape<\/code>) lub kolor t\u0142a.<\/p>\n<p>Selekory dzia\u0142aj\u0105 najlepiej z elementami, kt\u00f3re nie maj\u0105 w\u0142asnego stylu systemowego (np. TextView, ImageView, LinearLayout). W przypadku <code>Button<\/code> wi\u0119kszo\u015b\u0107 selektor\u00f3w i kszta\u0142t\u00f3w nie dzia\u0142a bez wy\u0142\u0105czenia styl\u00f3w systemowych, dlatego w tym celu wykorzystujemy raczej TextView jako zamiennik przycisku.<\/p>\n<hr \/>\n<h2>Przyk\u0142adowy selektor z 4 stanami (bez u\u017cywania pressed)<\/h2>\n<p>Plik: <code>res\/drawable\/menu_item_selector.xml<\/code><\/p>\n<pre><code class=\"lang-xml language-xml xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\n&lt;selector xmlns:android=&quot;http:\/\/schemas.android.com\/apk\/res\/android&quot;&gt;\n\n    &lt;!-- 1. Stan: element wy\u0142\u0105czony --&gt;\n    &lt;item android:state_enabled=&quot;false&quot;\n        android:drawable=&quot;@drawable\/bg_disabled&quot; \/&gt;\n\n    &lt;!-- 2. Stan: element wybrany (selected) --&gt;\n    &lt;item android:state_selected=&quot;true&quot;\n        android:drawable=&quot;@drawable\/bg_selected&quot; \/&gt;\n\n    &lt;!-- 3. Stan: element jest zaznaczony (checked) --&gt;\n    &lt;item android:state_checked=&quot;true&quot;\n        android:drawable=&quot;@drawable\/bg_focused&quot; \/&gt;\n\n    &lt;!-- 4. Stan domy\u015blny --&gt;\n    &lt;item android:drawable=&quot;@drawable\/bg_default&quot; \/&gt;\n\n&lt;\/selector&gt;<\/code><\/pre>\n<hr \/>\n<h2>Om\u00f3wienie wykorzystanych stan\u00f3w<\/h2>\n<ol>\n<li>\n<p><strong>state_enabled=&#8221;false&#8221;<\/strong>\nElement ma by\u0107 wyszarzony lub nieaktywny. Cz\u0119sto u\u017cywa si\u0119 s\u0142abszego koloru lub mniejszego kontrastu.<\/p>\n<\/li>\n<li>\n<p><strong>state_selected=&#8221;true&#8221;<\/strong>\nTen stan jest wygodny np. w menu, zak\u0142adkach, listach wyboru. Mo\u017cna podkre\u015bli\u0107, kt\u00f3re &#8222;pude\u0142ko&#8221; zosta\u0142o klikni\u0119te.<\/p>\n<\/li>\n<li>\n<p><strong>state_checked=&#8221;true&#8221;<\/strong>\nWidoczne g\u0142\u00f3wnie wtedy, gdy obiekt zmieni sw\u00f3j stan na zaznaczony.<\/p>\n<\/li>\n<li>\n<p><strong>domy\u015blny<\/strong>\nTen element wykonuje si\u0119 zawsze wtedy, gdy pozosta\u0142e warunki nie zosta\u0142y spe\u0142nione. To podstawowy wygl\u0105d.<\/p>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>Style w Android Studio \u2013 czym s\u0105 i jak ich u\u017cywa\u0107<\/h2>\n<p>Style w Android Studio to zestawy w\u0142a\u015bciwo\u015bci wizualnych, kt\u00f3re mo\u017cna nada\u0107 elementom interfejsu, aby zachowa\u0107 sp\u00f3jny wygl\u0105d w ca\u0142ej aplikacji. Style zapisuje si\u0119 w plikach XML w folderze <code>res\/values<\/code>, najcz\u0119\u015bciej w <code>styles.xml<\/code>. Ka\u017cdy styl mo\u017ce definiowa\u0107 wygl\u0105d takich element\u00f3w jak TextView, Button, Switch, CardView czy ImageButton \u2013 wa\u017cne tylko, aby dobra\u0107 w\u0142a\u015bciwo\u015bci pasuj\u0105ce do typu elementu. Dzi\u0119ki stylom mo\u017cesz jednym ustawieniem zmieni\u0107 wygl\u0105d wielu element\u00f3w naraz, bez powtarzania kodu w ka\u017cdym widoku. W stylu definiujesz w\u0142a\u015bciwo\u015bci takie jak kolor tekstu, wielko\u015b\u0107 czcionki, marginesy, wype\u0142nienia, t\u0142o czy rodzaj czcionki. Mo\u017cna r\u00f3wnie\u017c dziedziczy\u0107 style po innych stylach, co pozwala tworzy\u0107 ca\u0142e hierarchie estetyczne w aplikacji.<\/p>\n<hr \/>\n<h2>Najwa\u017cniejsze w\u0142a\u015bciwo\u015bci u\u017cywane w stylach (8 przyk\u0142ad\u00f3w)<\/h2>\n<ol>\n<li><strong>android:textColor<\/strong> \u2013 ustawia kolor tekstu.<\/li>\n<li><strong>android:textSize<\/strong> \u2013 okre\u015bla wielko\u015b\u0107 czcionki (np. 16sp, 20sp).<\/li>\n<li><strong>android:fontFamily<\/strong> \u2013 nadaje rodzin\u0119 czcionki (np. sans-serif, monospace).<\/li>\n<li><strong>android:padding<\/strong> \u2013 ustawia wewn\u0119trzne odst\u0119py elementu.<\/li>\n<li><strong>android:layout_margin<\/strong> \u2013 okre\u015bla marginesy zewn\u0119trzne elementu.<\/li>\n<li><strong>android:background<\/strong> \u2013 nadaje t\u0142o, np. kolor, selector lub shape.<\/li>\n<li><strong>android:gravity<\/strong> \u2013 ustawia wyr\u00f3wnanie tekstu wewn\u0105trz elementu (center, left, right).<\/li>\n<li><strong>android:width \/ android:height<\/strong> \u2013 pozwalaj\u0105 zmieni\u0107 domy\u015blny rozmiar elementu (np. 200dp, wrap_content, match_parent).<\/li>\n<\/ol>\n<hr \/>\n<h2>Przyk\u0142adowy styl z wieloma w\u0142a\u015bciwo\u015bciami<\/h2>\n<p>Plik: <code>res\/values\/styles.xml<\/code><\/p>\n<pre><code class=\"lang-xml language-xml xml\">&lt;style name=&quot;MenuItemStyle&quot;&gt;\n    &lt;item name=&quot;android:textColor&quot;&gt;@android:color\/white&lt;\/item&gt;\n    &lt;item name=&quot;android:textSize&quot;&gt;18sp&lt;\/item&gt;\n    &lt;item name=&quot;android:fontFamily&quot;&gt;sans-serif-medium&lt;\/item&gt;\n    &lt;item name=&quot;android:padding&quot;&gt;16dp&lt;\/item&gt;\n    &lt;item name=&quot;android:layout_margin&quot;&gt;8dp&lt;\/item&gt;\n    &lt;item name=&quot;android:background&quot;&gt;@drawable\/menu_item_selector&lt;\/item&gt;\n    &lt;item name=&quot;android:gravity&quot;&gt;center&lt;\/item&gt;\n    &lt;item name=&quot;android:layout_width&quot;&gt;match_parent&lt;\/item&gt;\n&lt;\/style&gt;<\/code><\/pre>\n<h2>\u0106WICZENIA<\/h2>\n<h3>\u0106wiczenie 1<\/h3>\n<p>Utw\u00f3rz w folderze <code>res\/drawable<\/code> plik o nazwie <code>rounded_blue.xml<\/code>.\nMa to by\u0107 prostok\u0105tny shape z nast\u0119puj\u0105cymi cechami:\n\u2013 zaokr\u0105glenie rog\u00f3w 20dp,\n\u2013 kolor t\u0142a #2196F3,\n\u2013 obramowanie 2dp koloru #0D47A1,\n\u2013 padding wewn\u0119trzny min. 10dp.\nNast\u0119pnie zastosuj ten shape jako t\u0142o <strong><code>&lt;android.widget.Button\/&gt;<\/code><\/strong>  pe\u0142ni\u0105cego rol\u0119 przycisku.<\/p>\n<h3>\u0106wiczenie 2<\/h3>\n<p>Stw\u00f3rz drugi shape o nazwie <code>rounded_blue_dark.xml<\/code>, kt\u00f3ry ma by\u0107 ciemniejsz\u0105 wersj\u0105 poprzedniego (dowolny ciemniejszy kolor).\nZastosuj inne zaokr\u0105glenie (np. 4dp), aby efekt by\u0142 widoczny.\nPrzygotuj go do wykorzystania p\u00f3\u017aniej w selektorze.<\/p>\n<h3>\u0106wiczenie 3<\/h3>\n<p>Utw\u00f3rz shape o nazwie <code>oval_marker.xml<\/code>, kt\u00f3ry b\u0119dzie okr\u0105g\u0142ym markerem:\n\u2013 przypisz <code>android:shape=&quot;oval&quot;<\/code>,\n\u2013 wype\u0142nienie np. #FF5722,\n\u2013 rozmiar 48dp na 48dp,\n\u2013 obramowanie 3dp koloru #E64A19.\nU\u017cyj go jako t\u0142o ma\u0142ego <strong>ImageView<\/strong>.<\/p>\n<hr \/>\n<h3>\u0106wiczenie 4<\/h3>\n<p>Stw\u00f3rz selektor o nazwie <code>rounded_blue_selector.xml<\/code> korzystaj\u0105cy z shape\u2019\u00f3w z \u0107wicze\u0144 1 i 2.\nPowinien zawiera\u0107 dwa stany:\n\u2013 state_pressed=&#8221;true&#8221; \u2192 <code>rounded_blue_dark.xml<\/code>,\n\u2013 default \u2192 <code>rounded_blue.xml<\/code>.\nPod\u0142\u0105cz selektor do <code>&lt;android.widget.Button\/&gt;<\/code>.<\/p>\n<h3>\u0106wiczenie 5<\/h3>\n<p>Stw\u00f3rz selektor dla <code>&lt;Switch\/&gt;<\/code>, o nazwie <code>toggle_selector.xml<\/code>.\nU\u017cyj <strong>dw\u00f3ch r\u00f3\u017cnych shape\u2019\u00f3w<\/strong>:\n\u2013 wersja \u201eON\u201d: prostok\u0105t z gradientem (np. zielony \u2192 ciemny zielony),\n\u2013 wersja \u201eOFF\u201d: prostok\u0105t jednolity, szary.\nStan, jaki obs\u0142ugujesz:\n\u2013 state_checked=&#8221;true&#8221; \u2192 ON,\n\u2013 default lub state_checked=&#8221;false&#8221; \u2192 OFF.<\/p>\n<h3>\u0106wiczenie 6<\/h3>\n<p>Znajdz selektor kt\u00f3ry dzia\u0142a z 2 stanami state_focused i default\nW ka\u017cdym stanie zastosuj inny shape stworzony przez Ciebie (mo\u017ce by\u0107 prostok\u0105t, owal, ring \u2013 dowolnie).<\/p>\n<hr \/>\n<h3>\u0106wiczenie 7<\/h3>\n<p>Utw\u00f3rz styl o nazwie <code>ClickableBoxStyle<\/code>, kt\u00f3ry ustawia:\n\u2013 textSize 20sp,\n\u2013 padding 16dp,\n\u2013 textColor bia\u0142y,\n\u2013 gravity center,\n\u2013 background \u2192 selektor z \u0107wiczenia 4.\nZastosuj styl do przynajmniej dw\u00f3ch TextView w layoucie.<\/p>\n<h3>\u0106wiczenie 8<\/h3>\n<p>Stw\u00f3rz styl <code>ToggleStyle<\/code>, kt\u00f3ry nadaje TextView wygl\u0105d prze\u0142\u0105cznika:\n\u2013 background \u2192 selektor z \u0107wiczenia 5,\n\u2013 textStyle=&#8221;bold&#8221;,\n\u2013 minWidth=&#8221;120dp&#8221;,\n\u2013 padding=&#8221;10dp&#8221;.\nZastosuj styl do swojego \u201eprze\u0142\u0105cznika\u201d i poka\u017c, \u017ce wraz ze zmian\u0105 <code>checked<\/code> wygl\u0105d r\u00f3wnie\u017c si\u0119 zmienia.<\/p>\n<h3>\u0106wiczenie 9<\/h3>\n<p>Utw\u00f3rz styl <code>EditTextStyle<\/code> i zastosuj go do <code>EditText<\/code>.\nStyl powinien ustawia\u0107:\n\u2013 width i height (np. 60dp),\n\u2013 padding 8dp,\n\u2013 background \u2192 selektor z \u0107wiczenia 6,\n\u2013 tint dowolnego koloru,\n\u2013 focusable=&#8221;true&#8221;.\nSprawdz jak element dzia\u0142a ze stylem i selektorem.<\/p>\n<p>Termin wys\u0142ania sprawozdania  dla nieobecnych na lekcji 04.12 to 05.12 (pi\u0105tek) 23:59<\/p>","protected":false},"excerpt":{"rendered":"<p>Tworzenie kszta\u0142t\u00f3w (shape) w Android Studio \u2013 wprowadzenie W Android Studio mo\u017cemy tworzy\u0107 w\u0142asne kszta\u0142ty w plikach XML umieszczonych w folderze res\/drawable. Kszta\u0142ty te s\u0142u\u017c\u0105 przede wszystkim jako t\u0142a element\u00f3w UI, takich jak TextView, LinearLayout, ImageView, CardView, a tak\u017ce jako elementy selektor\u00f3w (np. efekt klikni\u0119cia). Nie dzia\u0142aj\u0105 one domy\u015blnie na <Button \/>, poniewa\u017c Button korzysta z [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-627","post","type-post","status-publish","format-standard","hentry","category-mob-3pg2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kszta\u0142ty, selektory i style w android studio - Tomasz Sadowski<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kszta\u0142ty, selektory i style w android studio - Tomasz Sadowski\" \/>\n<meta property=\"og:description\" content=\"Tworzenie kszta\u0142t\u00f3w (shape) w Android Studio \u2013 wprowadzenie W Android Studio mo\u017cemy tworzy\u0107 w\u0142asne kszta\u0142ty w plikach XML umieszczonych w folderze res\/drawable. Kszta\u0142ty te s\u0142u\u017c\u0105 przede wszystkim jako t\u0142a element\u00f3w UI, takich jak TextView, LinearLayout, ImageView, CardView, a tak\u017ce jako elementy selektor\u00f3w (np. efekt klikni\u0119cia). Nie dzia\u0142aj\u0105 one domy\u015blnie na &lt;Button\/&gt;, poniewa\u017c Button korzysta z [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/\" \/>\n<meta property=\"og:site_name\" content=\"Tomasz Sadowski\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T00:04:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-04T12:14:33+00:00\" \/>\n<meta name=\"author\" content=\"tomek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"tomek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/\"},\"author\":{\"name\":\"tomek\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"headline\":\"Kszta\u0142ty, selektory i style w android studio\",\"datePublished\":\"2025-12-04T00:04:22+00:00\",\"dateModified\":\"2025-12-04T12:14:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/\"},\"wordCount\":1189,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"articleSection\":[\"MOB 3PG2\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/\",\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/\",\"name\":\"Kszta\u0142ty, selektory i style w android studio - Tomasz Sadowski\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#website\"},\"datePublished\":\"2025-12-04T00:04:22+00:00\",\"dateModified\":\"2025-12-04T12:14:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2025\\\/12\\\/04\\\/627\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kszta\u0142ty, selektory i style w android studio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#website\",\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/\",\"name\":\"Tomasz Sadowski Zaj\u0119cia\",\"description\":\"Zbi&oacute;r zaj\u0119\u0107 prowadzonych przez Tomasza Sadowskiego\",\"publisher\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\",\"name\":\"tomek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\",\"caption\":\"tomek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/zajecia.tsadowski.pl\"],\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kszta\u0142ty, selektory i style w android studio - Tomasz Sadowski","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/","og_locale":"pl_PL","og_type":"article","og_title":"Kszta\u0142ty, selektory i style w android studio - Tomasz Sadowski","og_description":"Tworzenie kszta\u0142t\u00f3w (shape) w Android Studio \u2013 wprowadzenie W Android Studio mo\u017cemy tworzy\u0107 w\u0142asne kszta\u0142ty w plikach XML umieszczonych w folderze res\/drawable. Kszta\u0142ty te s\u0142u\u017c\u0105 przede wszystkim jako t\u0142a element\u00f3w UI, takich jak TextView, LinearLayout, ImageView, CardView, a tak\u017ce jako elementy selektor\u00f3w (np. efekt klikni\u0119cia). Nie dzia\u0142aj\u0105 one domy\u015blnie na &lt;Button\/&gt;, poniewa\u017c Button korzysta z [&hellip;]","og_url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/","og_site_name":"Tomasz Sadowski","article_published_time":"2025-12-04T00:04:22+00:00","article_modified_time":"2025-12-04T12:14:33+00:00","author":"tomek","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"tomek","Szacowany czas czytania":"6 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/#article","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/"},"author":{"name":"tomek","@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"headline":"Kszta\u0142ty, selektory i style w android studio","datePublished":"2025-12-04T00:04:22+00:00","dateModified":"2025-12-04T12:14:33+00:00","mainEntityOfPage":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/"},"wordCount":1189,"commentCount":0,"publisher":{"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"articleSection":["MOB 3PG2"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/","url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/","name":"Kszta\u0142ty, selektory i style w android studio - Tomasz Sadowski","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/#website"},"datePublished":"2025-12-04T00:04:22+00:00","dateModified":"2025-12-04T12:14:33+00:00","breadcrumb":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2025\/12\/04\/627\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/zajecia.tsadowski.pl\/"},{"@type":"ListItem","position":2,"name":"Kszta\u0142ty, selektory i style w android studio"}]},{"@type":"WebSite","@id":"https:\/\/zajecia.tsadowski.pl\/#website","url":"https:\/\/zajecia.tsadowski.pl\/","name":"Tomasz Sadowski Zaj\u0119cia","description":"Zbi&oacute;r zaj\u0119\u0107 prowadzonych przez Tomasza Sadowskiego","publisher":{"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zajecia.tsadowski.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":["Person","Organization"],"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c","name":"tomek","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g","caption":"tomek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g"},"sameAs":["https:\/\/zajecia.tsadowski.pl"],"url":"https:\/\/zajecia.tsadowski.pl\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/comments?post=627"}],"version-history":[{"count":23,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/627\/revisions"}],"predecessor-version":[{"id":679,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/627\/revisions\/679"}],"wp:attachment":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/media?parent=627"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/categories?post=627"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/tags?post=627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}