Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

继承自FragmentActivity 时,计算键盘是否显示出现偏差 #24

Closed
Jacksgong opened this issue Apr 20, 2016 · 0 comments
Closed
Labels

Comments

@Jacksgong
Copy link
Owner

对比两个栈

使用 FragmentActivityActivity时 整个布局的层级关系:

View Hierarchy:
      com.android.internal.policy.PhoneWindow$DecorView{287b762 V.E..... ... 0,0-1080,1920}
        android.widget.LinearLayout{b8a7d7b V.E..... ... 0,0-1080,1776}
          android.view.ViewStub{32bf62d G.E..... ... 0,0-0,0 #10203ab android:id/action_mode_bar_stub}
          android.widget.FrameLayout{4551798 V.E..... ... 0,72-1080,1776 #1020002 android:id/content}
            cn.dreamtobe.kpswitch.widget.KPSwitchRootLinearLayout{5ea5536 V.E..... ... 0,0-1080,1704 #7f0b0052 app:id/rootView}
              android.support.v7.widget.RecyclerView{880ec37 VFED.... F.. 0,0-1080,1539 #7f0b0068 app:id/content_ryv}
              android.widget.LinearLayout{6785a4 VFE..... ... 0,1539-1080,1704 #7f0b0053 app:id/sendMsgLayout}
                android.widget.ImageView{7a40f0d V.ED.... ... 30,34-126,130 #7f0b0054 app:id/voice_text_switch_iv}
                android.widget.RelativeLayout{e7e8ec2 V.E..... ... 150,25-900,139}
                  android.widget.EditText{76e14d3 VFED..CL ... 0,0-750,114 #7f0b0055 app:id/send_edt}
                  android.widget.TextView{2695810 G.ED..C. ... 0,0-0,0 #7f0b0056 app:id/send_voice_btn}
                android.widget.RelativeLayout{c0f8f09 V.E..... ... 900,0-1080,165}
                  android.widget.ImageView{a2ad50e V.ED..C. ... 42,34-138,130 #7f0b0057 app:id/plus_iv}
                  android.widget.TextView{7fb2b2f G.ED..C. ... 0,0-0,0 #7f0b0058 app:id/send_btn}
              cn.dreamtobe.kpswitch.widget.KPSwitchPanelLinearLayout{273e53c G.E..... ... 0,0-0,0 #7f0b0051 app:id/panel_root}
                android.view.View{39912c5 V.ED.... ... 0,0-0,0}
                android.widget.LinearLayout{543341a V.E..... ... 0,0-0,0 #7f0b0059 app:id/panel_content}
                  android.widget.TextView{d994b4b V.ED..C. ... 0,0-0,0 #7f0b005a app:id/send_img_tv}
                  android.widget.TextView{6381928 V.ED.... ... 0,0-0,0}
        android.view.View{a7d1641 V.ED.... ... 0,1776-1080,1920 #1020030 android:id/navigationBarBackground}
        android.view.View{57520f3 V.ED.... ... 0,0-1080,72 #102002f android:id/statusBarBackground}

使用 AppCompatActivity时 整个布局的层级关系:

View Hierarchy:
      com.android.internal.policy.PhoneWindow$DecorView{9b17588 V.E..... ... 0,0-1080,1920}
        android.widget.LinearLayout{18eab21 V.E..... ... 0,0-1080,1776}
          android.view.ViewStub{e691b46 G.E..... ... 0,0-0,0 #10203ab android:id/action_mode_bar_stub}
          android.widget.FrameLayout{7342107 V.E..... ... 0,72-1080,1776}
            android.support.v7.widget.ActionBarOverlayLayout{5ac6234 V.E..... ... 0,0-1080,1704 #7f0b0040 app:id/decor_content_parent}
              android.support.v7.widget.ContentFrameLayout{889d85d V.E..... ... 0,168-1080,1704 #1020002 android:id/content}
                cn.dreamtobe.kpswitch.widget.KPSwitchRootLinearLayout{78ba5d2 V.E..... ... 0,0-1080,1536 #7f0b0052 app:id/rootView}
                  android.support.v7.widget.RecyclerView{567c6a3 VFED.... F.. 0,0-1080,1371 #7f0b0068 app:id/content_ryv}
                  android.widget.LinearLayout{c76da0 VFE..... ... 0,1371-1080,1536 #7f0b0053 app:id/sendMsgLayout}
                    android.support.v7.widget.AppCompatImageView{2109d59 V.ED.... ... 30,34-126,130 #7f0b0054 app:id/voice_text_switch_iv}
                    android.widget.RelativeLayout{cda4d1e V.E..... ... 150,25-900,139}
                      android.support.v7.widget.AppCompatEditText{fa629ff VFED..CL ... 0,0-750,114 #7f0b0055 app:id/send_edt}
                      android.support.v7.widget.AppCompatTextView{4c5c3cc G.ED..C. ... 0,0-0,0 #7f0b0056 app:id/send_voice_btn}
                    android.widget.RelativeLayout{5a4b615 V.E..... ... 900,0-1080,165}
                      android.support.v7.widget.AppCompatImageView{fda1d2a V.ED..C. ... 42,34-138,130 #7f0b0057 app:id/plus_iv}
                      android.support.v7.widget.AppCompatTextView{d3d671b G.ED..C. ... 0,0-0,0 #7f0b0058 app:id/send_btn}
                  cn.dreamtobe.kpswitch.widget.KPSwitchPanelLinearLayout{27150b8 G.E..... ... 0,0-0,0 #7f0b0051 app:id/panel_root}
                    android.view.View{7279e91 V.ED.... ... 0,0-0,0}
                    android.widget.LinearLayout{354e1f6 V.E..... ... 0,0-0,0 #7f0b0059 app:id/panel_content}
                      android.support.v7.widget.AppCompatTextView{24159f7 V.ED..C. ... 0,0-0,0 #7f0b005a app:id/send_img_tv}
                      android.support.v7.widget.AppCompatTextView{b46c064 V.ED.... ... 0,0-0,0}
              android.support.v7.widget.ActionBarContainer{d1692cd V.ED.... ... 0,0-1080,168 #7f0b0041 app:id/action_bar_container}
                android.support.v7.widget.Toolbar{ae52782 V.E..... ... 0,0-1080,168 #7f0b0042 app:id/action_bar}
                  android.widget.TextView{6279e93 V.ED.... ... 48,43-468,124}
                  android.support.v7.widget.ActionMenuView{9e17ed0 V.E..... ... 1080,0-1080,168}
                android.support.v7.widget.ActionBarContextView{e868ec9 G.E..... ... 0,0-0,0 #7f0b0043 app:id/action_context_bar}
        android.view.View{74239ce V.ED.... ... 0,1776-1080,1920 #1020030 android:id/navigationBarBackground}
        android.view.View{82390ef V.ED.... ... 0,0-1080,72 #102002f android:id/statusBarBackground}

其实整个项目是根据 AppCompatActivity适配起来的。

而很显然在 ActivityFragmentActivity 的布局中 contentViewparentandroid.widget.LinearLayout{b8a7d7b V.E..... ... 0,0-1080,1776} 而这个布局的父布局直接就是 DecorView,并且通过分析,获知 这边这个 contentViewparent的高度会等于 DecorViewHeight - NavigationBarHeight,因此就我们的适配中的键盘高度计算,是依赖这个布局的高度变化的只考虑了 AppCompatActivity 的情况,没有覆盖这个情况,这边需要对这个情况进行覆盖,以防止键盘是否显示计算出错。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant