Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Material Components for Android 1.0.0 → 1.1.0
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Nabe
May 15, 2019
Programming
1.1k
2
Share
Material Components for Android 1.0.0 → 1.1.0
https://kanmoba.connpass.com/event/129285/
Nabe
May 15, 2019
More Decks by Nabe
See All by Nabe
カクヨムAndroidアプリのリブート
numeroanddev
0
620
GraphicsLayerのBitmap作成
numeroanddev
0
230
GraphQLとGigaViewer for Apps
numeroanddev
4
4.5k
Android アプリのプロジェクトをモダンにし続ける工夫
numeroanddev
1
770
Material 3で Material 2ぽい見た目にする
numeroanddev
2
650
Google I/O 2023 の 個人的おすすめセッションの紹介 / Introducing interesting sessions at Google IO 2023
numeroanddev
1
490
Jetpack ComposeのTalkback対応/Improve Talkback in Jetpack Compose
numeroanddev
0
580
Baseline Profilesでアプリのパフォーマンスを向上させる / Improve app performance with Baseline Profiles
numeroanddev
0
980
Jetpack Composeでアプリを開発して遭遇した問題
numeroanddev
0
760
Other Decks in Programming
See All in Programming
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
24
14k
JAWS-UG横浜 #100 祝・第100回スペシャルAWS は VPC レスの時代へ
maroon1st
0
160
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
110
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
2
370
iOS機能開発のAI環境と起きた変化
ryunakayama
0
190
Server-Side Kotlin LT大会 vol.18 [Kotlin-lspの最新情報と Neovimのlsp設定例]
yasunori0418
1
160
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
720
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
290
t *testing.T は どこからやってくるの?
otakakot
1
690
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
500
Back to the roots of date
jinroq
0
270
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
230
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
170
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Utilizing Notion as your number one productivity tool
mfonobong
4
290
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
How to Talk to Developers About Accessibility
jct
2
180
The World Runs on Bad Software
bkeepers
PRO
72
12k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Ruling the World: When Life Gets Gamed
codingconduct
0
210
The Curse of the Amulet
leimatthew05
1
11k
For a Future-Friendly Web
brad_frost
183
10k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
54k
Transcript
.BUFSJBM$PNQPOFOUT GPS"OESPJE ؔϞό ,B[VLJ8BUBOBCF
1SPpMF w ͳ w 5XJUUFS!/BCF$PUU w (JU)VC/6NFSP"OE%FW w 'FOSJS*OD w
"OESPJE"QQ%FWFMPQFS
⚠JTBMQIB⚠
BMQIB w .BUFSJBM5IFNJOH w $PMPS 4IBQF 5ZQPHSBQIZ5IFNJOH w %BSL5IFNF
w /FX$PNQPOFOUT w 6QEBUF$PNQPOFOUT w #VHpYFUD
BMQIB w .BUFSJBM5IFNJOH w $PMPS 4IBQF 5ZQPHSBQIZ5IFNJOH w %BSL5IFNF
w /FX$PNQPOFOUT w 6QEBUF$PNQPOFOUT w #VHpYFUD
/FX$PNQPOFOUT w &YUFOEFE'MPBUJOH"DUJPO#VUUPO w .BUFSJBM#VUUPO5PHHMF(SPVQ
&YUFOEFE'"#
&YUFOEFE'"# <com.google.android.material.floatingactionbutton.ExtendedF loatingActionButton android:id="@+id/extendedFab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:text="Create" app:icon="@drawable/ic_add" />
&YUFOEFE'"# extendedFab.extend() extendedFab.shrink()
.BUFSJBM#VUUPO5PHHMF(SPVQ
.BUFSJBM#VUUPO5PHHMF(SPVQ <com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/singleSelectToggleGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" app:singleSelection="true"> <com.google.android.material.button.MaterialButton style=“?attr/materialButtonOutlinedStyle" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Select1" /> <com.google.android.material.button.MaterialButton style="?attr/materialButtonOutlinedStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Select2" /> </com.google.android.material.button.MaterialButtonToggleGroup>
.BUFSJBM#VUUPO5PHHMF(SPVQ w DIFDLFE#VUUPO*EDIFDLFE#VUUPO*ET w DIFDL JE*OU w BEE0O#VUUPO$IFDLFE-JTUFOFS w
DMFBS$IFDLFE w "OENPSFʜ
6QEBUFE$PNQPOFOUT w 5FYU*OQVU-BZPVU w #PUUPN/BWJHBUJPO w 4OBDLCBS w $BSE7JFX w
0UIFST
5FYU*OQVU-BZPVU
5FYU*OQVU-BZPVU <com.google.android.material.textfield.TextInputLayout android:id="@+id/dropdownFilledTextInputLayout" style="@style/ Widget.MaterialComponents.TextInputLayout.FilledBox.Exposed DropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.AppCompatAutoCompleteTextView android:id="@+id/filledAutoCompleteTextView"
android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> </com.google.android.material.textfield.TextInputLayout>
5FYU*OQVU-BZPVU val adapter = ArrayAdapter( context, android.R.layout.simple_spinner_dropdown_item, arrayOf("Item 1", "Item
2", "Item 3", "Item 4") ) filledAutoCompleteTextView.setAdapter(adapter)
5FYU*OQVU-BZPVU w BQQTUBSU*DPO%SBXBCMFBQQFOE*DPO%SBXBCMF w TFU4UBSU*DPO0O$MJDL-JTUFOFS TFU&OE*DPO0O$MJDL-JTUFOFS
#PUUPN/BWJHBUJPO
#PUUPN/BWJHBUJPO // show only badge bottomNavigation.showBadge(R.id.navigation_item_1) // show badge with
number val badgeDrawable = bottomNavigation.showBadge(R.id.navigation_item_2) badgeDrawable.apply { number = 5000 maxCharacterCount = 5 // default is 4 } // dismiss badge bottomNavigation.removeBadge(R.id.navigation_item_1)
4OBDLCBS
4OBDLCBS Snackbar.make(view, "Message", Snackbar.LENGTH_LONG) .setAction("Action") { // Some action }
.setAnchorView(fab) .show() w TFU"ODIPS7JFX WJFX w FH'MPBUJOH"DUJPO#VUUPO
4OBDLCBS <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> <item name="snackbarStyle"> @style/Widget.MaterialComponents.Snackbar.FullWidth </item> </style>
$BSE7JFX
$BSE7JFX <com.google.android.material.card.MaterialCardView android:id=“@+id/cardView" android:layout_width="match_parent" android:layout_height="match_parent" android:checkable="true"> </com.google.android.material.card.MaterialCardView> cardView.isSelected = true
// or false
0UIFS w 4VQQPSUT.BUFSJBM5IFNJOH $PMPS 4IBQF 5ZQPHSBQIZ %BSL5IFNF w
.BUFSJBM%JBMPH#VJMEFS w 4FMFDUJPO$POUSPM 4XJUDI 3BEJP#VUUPO 5PHHMF#VUUPO w #PUUPN4IFFU w "OENPSFʜ
*OEFWFMPQNFOU
w IUUQTHJUIVCDPNNBUFSJBMDPNQPOFOUTNBUFSJBM DPNQPOFOUTBOESPJE