Полусвернуть и полуразвернуть узел вкладки фрагмента

В одном из моих проектов я реализовал CustomTabHost из https://stackoverflow.com/a/19467434/3484668.

То, что я пытаюсь сделать, это полускрыть виджет вкладки узла вкладки при нажатии на виджет второй дочерней вкладки, а затем развернуть его при повторном нажатии.

Вот код коллапса:

frTabHost.getTabWidget().getChildTabViewAt(2).setOnClickListener(tabWidgetSecondChildListener);

Слушатель это:

    private class TabWidgetSecondChildListener implements View.OnClickListener
    {

      @Override public void onClick(View view)
      {
        Log.d(TAG, "onClick: tabwidget clicked");
        Toast.makeText(DashboardActivity.this, "onClick: tabwidget clicked", Toast.LENGTH_SHORT)
            .show();
        if (!isTabExpanded)
        {
          //Utility.semiExpand(frTabHost.getTabWidget(), frTabHost.getTabWidget().getHeight());

          ObjectAnimator a = new ObjectAnimator();
          a.setPropertyName("translationY");
          a.setDuration((int) (2 * (frTabHost.getTabWidget().getHeight()
              / getResources().getDisplayMetrics().density)));
          a.setTarget(frTabHost.getTabWidget());
          a.setFloatValues(0, -frTabHost.getTabWidget().getHeight());
          a.start();

          ObjectAnimator b = new ObjectAnimator();
          b.setPropertyName("translationY");
          b.setDuration((int) (2 * ((ivTabs.getHeight() / 2)
              / getResources().getDisplayMetrics().density)));
          b.setTarget(ivTabs);
          b.setFloatValues(0, -ivTabs.getHeight() / 2);
          b.start();

          ivTabs.setClickable(false);
          isTabExpanded = true;
        } else
        {
          ObjectAnimator a = new ObjectAnimator();
          a.setPropertyName("translationY");
          a.setDuration((int) (2 * (frTabHost.getTabWidget().getHeight()
              / getResources().getDisplayMetrics().density)));
          a.setTarget(frTabHost.getTabWidget());
          a.setFloatValues(0, frTabHost.getTabWidget().getHeight());
          a.start();

          ObjectAnimator b = new ObjectAnimator();
          b.setPropertyName("translationY");
          b.setDuration((int) (2 * ((ivTabs.getHeight() / 2)
              / getResources().getDisplayMetrics().density)));

          b.setTarget(ivTabs);
          b.setFloatValues(0, ivTabs.getHeight() / 2);
          b.start();

          ivTabs.setClickable(true);
          ivTabs.setOnClickListener(ivTabsListener);
          isTabExpanded = false;
        }
      }
    }

Код для iVTabsLisener:

        private class IvTabsListener implements View.OnClickListener
    {

      @Override public void onClick(View view)
      {
        Toast.makeText(DashboardActivity.this, "onClick: ivTabs clicked", Toast.LENGTH_SHORT).show();
        if (!isTabExpanded)
        {

          ObjectAnimator a = new ObjectAnimator();
          a.setPropertyName("translationY");
          a.setDuration((int) (2 * (frTabHost.getTabWidget().getHeight()
              / getResources().getDisplayMetrics().density)));
          a.setTarget(frTabHost.getTabWidget());
          a.setFloatValues(0, -frTabHost.getTabWidget().getHeight());
          a.start();


          ObjectAnimator b = new ObjectAnimator();
          b.setPropertyName("translationY");
          b.setDuration(
              (int) (2 * ((ivTabs.getHeight() / 2) / getResources().getDisplayMetrics().density)));
          b.setTarget(ivTabs);
          b.setFloatValues(0, -ivTabs.getHeight() / 2);
          b.start();

          isTabExpanded = true;
          ivTabs.setClickable(true);
          ivTabs.setOnClickListener(null);
        }
      }
    }

Проблема в том, что он рушится в первый раз, затем расширяется во второй раз, и все в порядке. Но тогда ни один из кликов по фрагменту или просмотру изображения не работает. Пожалуйста, может ли кто-нибудь помочь решить эту проблему?


person Rushi M Thakker    schedule 07.11.2017    source источник
comment
Не могли бы вы включить код, показывающий, как вы подключаете clickListeners как для TabWidgetSecondChildListener, так и для IvTabsListener? Кажется, здесь нет ничего плохого в коде. Ваше тост-сообщение обязательно должно появиться. Так что я думаю, что ошибка где-то в другом месте   -  person Abhishek    schedule 12.11.2017
comment
@AbhishekSingh Я тебя не понимаю. В этом коде у меня довольно четко привязаны слушатели. Также я не сделал никакого всплывающего сообщения в этом коде.   -  person Rushi M Thakker    schedule 12.11.2017
comment
Извините, я пропустил это, потому что не предполагал, что вы будете устанавливать кликлистеры внутри OnClick... Подробно изучу и отвечу   -  person Abhishek    schedule 13.11.2017
comment
Можете ли вы также включить код, в котором вы объявляете ivTabs?   -  person Abhishek    schedule 13.11.2017
comment
Можете ли вы опубликовать простой проект с таким поведением на github?   -  person azizbekian    schedule 15.11.2017
comment
Обязательно сделаю к завтрашнему дню @azizbekian   -  person Rushi M Thakker    schedule 15.11.2017