1

Я использую нижний TabLayout с ViewPager над вкладками, XML, перечисленных ниже:Как скрыть нижнюю TabLayout после появления клавиатуры?

<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.

+0

положить ** андроида: windowSoftInputMode = "adjustResize | stateVisible | stateAlwaysHidden" ** в ** ** внутри menifest файла. –

+0

@RahulSharma, который также относится к 'ViewPager', чего не хочет OP. – earthw0rmjim

+0

попробуйте взять ** LinearLayout ** с ориентацией ** Вертикальный ** в качестве родителя. И затем попробуйте логику ** VISIBILITY **, как вы упомянули выше –

ответ

0

Это работает после того, как я сменил RelativeLayout на LinearLayout в соответствии с советом @Rahul Sharma.

Затем я использовал библиотеку KeyboardVisibilityEvent:

KeyboardVisibilityEvent.setEventListener(this, 
      new KeyboardVisibilityEventListener() { 
       @Override 
       public void onVisibilityChanged(boolean isOpen) { 
        mBottomTabLayout.setVisibility(isOpen ? View.GONE : View.VISIBLE); 
       } 
      }); 
Смежные вопросы