package Ġcn . l vs ong . lib . library . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcn . l vs ong . lib . library . R Ċ Ċ /** Ġå¦Ĥæŀľ æĥ³ å®ŀçİ° çĻ»å½ķ æĹ¶ ĠLogo Ġ éļı éĶ® çĽĺ å¼¹ èµ· åĴĮ åħ³éĹŃ ç¼© å°ı åĴĮ æĸ¹æ³ķ , åı¯ä»¥ åıĤèĢĥ éŃ Ķ æİ ł å°ı è¯´ çļĦ Ġ çĻ»å½ķ çķĮéĿ¢ Ċ Ġ* ĠDesc : Ġ Ġhttps :// juejin . im / entry / 5 8 da 1 5 7 2 0 ce 4 6 3 0 0 5 7 1 6 a 1 2 3 Ċ Ġ* ĠAuthor : ĠJ oo yer Ċ Ġ* ĠDate : Ġ 2 0 1 8 - 0 9 - 2 6 Ċ Ġ* ĠTime : Ġ 1 6 : 4 2 Ċ Ġ*/ Ċ class ĠAndroid Bug 5 4 9 7 Work around Ġprivate Ġconstructor ( val Ġactivity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Child Of Content : ĠView ĊĠĠĠ Ġprivate Ġvar Ġusable Height Previous Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġframe LayoutParams : ĠFrame Layout . LayoutParams ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġmore Ġinformation , Ġsee Ġhttps :// code . google . com / p / android / issues / detail ? id = 5 4 9 7 ĊĠĠĠĠĠĠĠ Ġ// ĠTo Ġuse Ġthis Ġclass , Ġsimply Ġinvoke Ġassist Activity () Ġon Ġan ĠActivity Ġthat Ġalready Ġhas Ġits Ġcontent Ġview Ġset . ĊĠĠĠĠĠĠĠ Ġfun Ġassist Activity ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid Bug 5 4 9 7 Work around ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġactivity . findViewById < View >( R . id . content ) Ġas ĠFrame Layout ĊĠĠĠĠĠĠĠ Ġm Child Of Content Ġ= Ġcontent . getChild At ( 0 ) ĊĠĠĠĠĠĠĠ Ġm Child Of Content . view Tree Observer . add On Global Layout Listener Ġ{ Ġpossibly Resize Child Of Content () Ġ} ĊĠĠĠĠĠĠĠ Ġframe LayoutParams Ġ= Ġm Child Of Content . layout Params Ġas ĠFrame Layout . LayoutParams ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpossibly Resize Child Of Content () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusable Height Now Ġ= Ġcompute Us able Height () ĊĠĠĠĠĠĠĠ Ġif Ġ( usable Height Now Ġ!= Ġusable Height Previous ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusable Height Sans Keyboard Ġ= Ġm Child Of Content . root View . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Difference Ġ= Ġusable Height Sans Keyboard Ġ- Ġusable Height Now ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( height Difference Ġ> Ġusable Height Sans Keyboard Ġ/ Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkeyboard Ġprobably Ġjust Ġbecame Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe LayoutParams . height Ġ= Ġusable Height Sans Keyboard Ġ- Ġheight Difference ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkeyboard Ġprobably Ġjust Ġbecame Ġhidden ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe LayoutParams . height Ġ= Ġusable Height Sans Keyboard ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Of Content . request Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusable Height Previous Ġ= Ġusable Height Now ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompute Us able Height (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġm Child Of Content . getWindow Visible Display Frame ( r ) ĊĠĠĠĠĠĠĠ Ġreturn Ġr . bottom Ġ- Ġr . top ĊĠĠĠ Ġ} Ċ Ċ }