Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
キーボードの切替を いい感じにしたい
Search
Ryo Sakaguchi
April 19, 2018
Programming
2.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
キーボードの切替を いい感じにしたい
potatotips #50
https://github.com/wakwak3125/KeyboardShowHideSample
Ryo Sakaguchi
April 19, 2018
More Decks by Ryo Sakaguchi
See All by Ryo Sakaguchi
なんとなくgRPC-Java を使ってるそこの俺、gRPC-Kotlin に移行したらどうだ?
wakwak3125
0
25
Android Architecture Componentsを使って、改善・効率化するAndroidアプリ開発
wakwak3125
0
1.3k
Test multiple APKs with Robolectric
wakwak3125
0
840
Clip, Elevation and ViewOutlineProvider
wakwak3125
1
1.4k
WebView as Fancy and effective View
wakwak3125
1
1.7k
ViewPager2をちょっとさわってみよう
wakwak3125
0
1.7k
年末だし、振り返るKotlin
wakwak3125
1
1.2k
社内ライブラリのアップデートフロー
wakwak3125
4
3.9k
Wantedly Peopleのリリースフロー
wakwak3125
1
4.9k
Other Decks in Programming
See All in Programming
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
250
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.7k
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
200
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
430
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
310
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
840
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
370
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
iOSDC2026登壇資料.pdf
riofujimon
0
170
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
730
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
2
11k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
880
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
460
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
The agentic SEO stack - context over prompts
schlessera
0
940
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Transcript
©2018 Wantedly, Inc. 2018.4.19 - ΩʔϘʔυͷସΛ ͍͍ײ͡ʹ͍ͨ͠ QPUBUPUJQT 3ZP4BLBHVDIJ !XBLXBL
©2018 Wantedly, Inc. ͔Β୭͔ڭ͑ͯཉ͍͠ པΉ
©2018 Wantedly, Inc. w 3ZP4BLBHVDIJ!XBLXBL w 8BOUFEMZ *OD d
w 8BOUFEMZ1FPQMF About me
©2018 Wantedly, Inc. ͪΐͬͱߟ͑ͯΈͨ Ͳ͏ͬͯ·͔͢ʁ .FTTFOHFSͱ͔Ͱ͋Δͭ w ֆจࣈͱ͔ૹ৴͢Δࣸਅબͨ͠Γͱ͔͢Δͱ͜Ζ w Ϙλϯͱ͔Λλοϓͨ͠Β͍͍ײ͡ʹΓସΘͬͯ
͘ΕΔͭ w J04ͰΑ͘ݟΔ͔ʁ
©2018 Wantedly, Inc. ΩʔϘʔυͷସ దʹΔ߹ attachmentButton.setOnClickListener { if (!pickerContainer.isVisible()) {
val params = window.attributes ImeUtil.hideImeKeyboard(this, editText) pickerContainer.visible() window.attributes = params } else { pickerContainer.gone() ImeUtil.showImeKeyboard(this, editText) } } val attachmentButton = findViewById<ImageView>(R.id.button_plus)
©2018 Wantedly, Inc. ΩʔϘʔυͷସ దʹΔ߹ val attachmentButton = findViewById<ImageView>(R.id.button_plus) attachmentButton.setOnClickListener
{ if (!pickerContainer.isVisible()) { val params = window.attributes ImeUtil.hideImeKeyboard(this, editText) pickerContainer.visible() window.attributes = params } else { pickerContainer.gone() ImeUtil.showImeKeyboard(this, editText) } }
©2018 Wantedly, Inc. ΩʔϘʔυͷସ దʹΔ߹ val attachmentButton = findViewById<ImageView>(R.id.button_plus) attachmentButton.setOnClickListener
{ if (!pickerContainer.isVisible()) { val params = window.attributes ImeUtil.hideImeKeyboard(this, editText) pickerContainer.visible() window.attributes = params } else { pickerContainer.gone() ImeUtil.showImeKeyboard(this, editText) } } όίϯ/ΨίϯΈ͍ͨͳԻ͕ฉ͖͑ͯͦ͜͏
©2018 Wantedly, Inc. ͪΐͬͱߟ͑ͯΈ·ͨ͠
©2018 Wantedly, Inc. ͪΐͬͱߟ͑ͯΈͨ .FTTFOHFSΛࢀߟʹ͢Δ ͬͨ͜ͱ w 7JFXߏͷEVNQͱͬͯΈΔ w BECTIFMMEVNQTZTBDUJWJUZUPQ
w ͻͨ͢ΒΓସ͑ͯΈͨ w ΩʔϘʔυͷߴ͞Λۃʹখ͘͞େ͖ͯ͘͠ସࣗମʹͲ͏੍͍ͬͨݶԽͰߦΘΕ͍ͯΔ͔͔֬Ίͨ w ҙѱʹͳͬͨؾ࣋ͪͰյ͠ʹ͔͔Δ
©2018 Wantedly, Inc. ͪΐͬͱߟ͑ͯΈͨ .FTTFOHFSΛࢀߟʹ͢Δ Θ͔ͬͨ͜ͱ w 7JFXͷߏ w ಛผͳมΘͬͨ$VTUPN7JFXΛ͍ͬͯΔ༷ࢠͳ͔ͬͨɻ
w ͻͨ͢ΒΓସ͑ͨ w ΩʔϘʔυͷཪʹ7JFX͕͋ΔงғؾΛ௫Μͩ w ͱ͍͏͜ͱΩʔϘʔυΛӅ͢ʢด͡Δʣࡍʹߴ͕͞มΘΒͳ͚Εྑ͍ͷͰʁ w ۃͳߴ͞ͷ߹NJONBY)FJHIUΛઃఆ͍ͯ͠Δͷ͔ͿͬյΕΔ͜ͱͳ͔ͬͨ
©2018 Wantedly, Inc. ͬͯΈͨ ΩʔϘʔυΛด͡Δࡍʹߴ͞Λม͑ͳ͍Α͏ʹ͢ΔΞϓϩʔν
©2018 Wantedly, Inc. ΩʔϘʔυͷସ దʹΔ߹ val attachmentButton = findViewById<ImageView>(R.id.button_plus) attachmentButton.setOnClickListener
{ if (!pickerContainer.isVisible()) { val params = window.attributes ImeUtil.hideImeKeyboard(this, editText) toAdjustNothing() pickerContainer.visible() window.attributes = params } else { pickerContainer.gone() toAdjustResize() ImeUtil.showImeKeyboard(this, editText) } }
©2018 Wantedly, Inc. ΩʔϘʔυͷସ ͪΐͬͱஸೡʹΔ߹ val attachmentButton = findViewById<ImageView>(R.id.button_plus) attachmentButton.setOnClickListener
{ if (!pickerContainer.isVisible()) { val params = window.attributes ImeUtil.hideImeKeyboard(this, editText) toAdjustNothing() pickerContainer.visible() window.attributes = params } else { pickerContainer.gone() toAdjustResize() ImeUtil.showImeKeyboard(this, editText) } }
©2018 Wantedly, Inc. ΩʔϘʔυͷସ ͪΐͬͱஸೡʹΔ߹ val attachmentButton = findViewById<ImageView>(R.id.button_plus) attachmentButton.setOnClickListener
{ if (!pickerContainer.isVisible()) { val params = window.attributes ImeUtil.hideImeKeyboard(this, editText) toAdjustNothing() pickerContainer.visible() window.attributes = params } else { pickerContainer.gone() toAdjustResize() ImeUtil.showImeKeyboard(this, editText) } } ΘΓ͔͠εϜʔζʂ
©2018 Wantedly, Inc. UP"EKVTU3FTJ[F 4PGU*OQVU.PEF ͦΕͧΕͲ͏͍͏ಈ͖Λ͢Δͷ͔ fun toAdjustResize() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
} •LayoutManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE •͜ΕWindowʹΩʔϘʔυͷग़ݱͷࡍʹɺΩʔϘʔυ͕ද͍ࣔͯ͠Δcontentsʹ͔ͿΒͳ͍Α͏ʹ WindowͷResizeΛ͢Δͷ
©2018 Wantedly, Inc. UP"EKVTU/PUIJOH 4PGU*OQVU.PEF ͦΕͧΕͲ͏͍͏ಈ͖Λ͢Δͷ͔ fun toAdjustNothing() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_Nothing)
} •LayoutManager.LayoutParams.SOFT_INPUT_ADJUST_Nothing •ΩʔϘʔυͷग़ݱ࣌ʹɺWindowͷߴ͞ௐͳͲΛ·ͬͨ͘͠ͳ͘ͳΔϞʔυɻ ຊʹԿ͠ͳ͍ͷͰɺ௨ৗ࣌ʹ͏ͱcontentsͱ͔Ϳͬͯ͠·͏
©2018 Wantedly, Inc. UP"EKVTU/PUIJOH %FNP"QQ fun toAdjustNothing() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_Nothing) }
•LayoutManager.LayoutParams.SOFT_INPUT_ADJUST_Nothing •ΩʔϘʔυͷग़ݱ࣌ʹɺWindowͷߴ͞ௐͳͲΛ·ͬͨ͘͠ͳ͘ͳΔϞʔυɻ ຊʹԿ͠ͳ͍ͷͰɺ௨ৗ࣌ʹ͏ͱcontentsͱ͔Ϳͬͯ͠·͏
©2018 Wantedly, Inc. ͜ͷͭΛదʹΓସ͑Δ ͱɺ͏·͘ߦ͘
©2018 Wantedly, Inc. ແཧཧײ͋ΔͷͰεϚʔτͳ ํ๏ืू͍ͯ͠·͢
©2018 Wantedly, Inc. IUUQTHJUIVCDPNXBLXBL ,FZCPBSE4IPX)JEF4BNQMF ࠓͷαϯϓϧ͜͜ʹ͋Γ·͢
©2018 Wantedly, Inc. 5IBOLT