44import android .support .design .widget .BottomNavigationView ;
55import android .support .v4 .view .ViewPager ;
66import android .view .MenuItem ;
7+ import android .widget .LinearLayout ;
78
9+ import com .hjq .baselibrary .utils .OnClickUtils ;
810import com .hjq .demo .R ;
911import com .hjq .demo .common .CommonActivity ;
1012import com .hjq .demo .ui .adapter .HomeViewPagerAdapter ;
11- import com .hjq .baselibrary .utils .OnClickUtils ;
1213import com .hjq .toast .ToastUtils ;
1314
1415import butterknife .BindView ;
2021 * desc : 主页界面
2122 */
2223public class HomeActivity extends CommonActivity implements
23- ViewPager .OnPageChangeListener , BottomNavigationView .OnNavigationItemSelectedListener {
24+ ViewPager .OnPageChangeListener , Runnable ,
25+ BottomNavigationView .OnNavigationItemSelectedListener {
2426
2527 @ BindView (R .id .vp_home_pager )
2628 ViewPager mViewPager ;
2729 @ BindView (R .id .bv_home_navigation )
2830 BottomNavigationView mBottomNavigationView ;
2931
32+ private HomeViewPagerAdapter mAdapter ;
33+
3034 @ Override
3135 protected int getLayoutId () {
3236 return R .layout .activity_home ;
@@ -39,18 +43,40 @@ protected int getTitleBarId() {
3943
4044 @ Override
4145 protected void initView () {
42- // 限制页面数量
43- mViewPager .setOffscreenPageLimit (4 );
4446 mViewPager .addOnPageChangeListener (this );
4547
4648 // 不使用图标默认变色
4749 mBottomNavigationView .setItemIconTintList (null );
4850 mBottomNavigationView .setOnNavigationItemSelectedListener (this );
51+
52+ // 修复在 ViewPager 中点击 EditText 弹出软键盘导致 BottomNavigationView 还显示在 ViewPager 下面的问题
53+ postDelayed (this , 1000 );
4954 }
5055
5156 @ Override
5257 protected void initData () {
53- mViewPager .setAdapter (new HomeViewPagerAdapter (this ));
58+ mAdapter = new HomeViewPagerAdapter (this );
59+ mViewPager .setAdapter (mAdapter );
60+
61+ // 限制页面数量
62+ mViewPager .setOffscreenPageLimit (mAdapter .getCount ());
63+ }
64+
65+ /**
66+ * {@link Runnable}
67+ */
68+ @ Override
69+ public void run () {
70+ /*
71+ 父布局为LinearLayout,因为 ViewPager 使用了权重的问题
72+ 软键盘在弹出的时候会把布局进行收缩,ViewPager 的高度缩小了
73+ 所以 BottomNavigationView 会显示在ViewPager 下面
74+ 解决方法是在 ViewPager 初始化高度后手动进行设置 ViewPager 高度并将权重设置为0
75+ */
76+ LinearLayout .LayoutParams layoutParams = (LinearLayout .LayoutParams ) mViewPager .getLayoutParams ();
77+ layoutParams .height = mViewPager .getHeight ();
78+ layoutParams .weight = 0 ;
79+ mViewPager .setLayoutParams (layoutParams );
5480 }
5581
5682 /**
@@ -134,4 +160,4 @@ public boolean isSupportSwipeBack() {
134160 // 不使用侧滑功能
135161 return !super .isSupportSwipeBack ();
136162 }
137- }
163+ }
0 commit comments