一旦键盘出现,如何隐藏底部TabLayout?

时间:2016-09-15 08:46:35

标签: android android-viewpager android-softkeyboard android-tablayout

我在标签上方使用TabLayout底部ViewPager,下面列出了XML:

<RelativeLayout
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/toolbar_wrapper"
        layout="@layout/toolbar_main" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs_bottom_main"
        style="@style/AppTabLayout"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_alignParentBottom="true"
        app:tabGravity="fill" />

    <View
        android:id="@+id/view_black_line"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_above="@id/tabs_bottom_main"
        android:background="@android:color/black" />

    <NonSwipableViewPager
        android:id="@+id/view_pager_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/view_black_line"
        android:layout_below="@id/toolbar_wrapper"
        android:background="@android:color/white" />

</RelativeLayout>

当键盘显示时,整个View向上推,我想只在键盘出现时隐藏底部TabLayout(但保持ViewPager以上)。如何实现呢?

P.S。

我已尝试收听键盘显示事件并使用TabLayout设置mBottomTabLayout.setVisibility(isOpen ? View.GONE : View.VISIBLE);可见性

但这会将整个ViewPager隐藏起来TabLayout

2 个答案:

答案 0 :(得分:1)

根据@Rahul Sharma的建议,我将RelativeLayout更改为LinearLayout后,该作品有效。

然后我使用了KeyboardVisibilityEvent库:

KeyboardVisibilityEvent.setEventListener(this,
            new KeyboardVisibilityEventListener() {
                @Override
                public void onVisibilityChanged(boolean isOpen) {
                    mBottomTabLayout.setVisibility(isOpen ? View.GONE : View.VISIBLE);
                }
            });

答案 1 :(得分:0)

将此添加到您要隐藏TabLayout的活动标记下的清单中:

android:windowSoftInputMode="adjustPan"