В одном из моих проектов я реализовал 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);
}
}
}
Проблема в том, что он рушится в первый раз, затем расширяется во второй раз, и все в порядке. Но тогда ни один из кликов по фрагменту или просмотру изображения не работает. Пожалуйста, может ли кто-нибудь помочь решить эту проблему?