ViewPager con el niño extensible

Estoy tratando de crear calendario plegable.

Estoy usando calendarView personalizado en ViewPager, así que cuando el botón de expand / collapse presionó mi calendario animate el derrumbamiento de todas las semanas del calendario excepto solamente uno.

El objetivo es pasar el mes cuando se amplía (que funciona como quiero) y pasar semanas cuando se derrumbó.

Debajo de calendarView es ListView con algunos eventos, cuando el usuario colapse calendario – listView altura debe cambiar.

El problema es cuando intento colapsar calendarView en ViewPager, él no cambia altura.

calendarView es un LinearLayout con vistas secundarias, cuando no está en ViewPager, animando y cambiando tamaño.

Estoy usando un pequeño fragmento para establecer la altura de ViewPager para él.

@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = 0; for(int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int h = child.getMeasuredHeight(); if(h > height) height = h; } heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } 

Estoy tratando de anular onMeasure en calendarView, utiliza diferentes animaciones, intentó cambiar el diseño ViewPager directamente, pero no hay suerte.

Por favor, ayúdame con este problema, tal vez hay un consejo para ello.

Encontré esto , esto , esto , y muchas más preguntas

Mi pregunta es muy similar a esta pregunta

Así que finalmente me di cuenta de cómo resolver mi problema, tal vez será útil.

aquí está mi PagerAdapter:

 class CustomAdapter extends PagerAdapter { private View mCurrentView; ... // Saving current active item @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { mCurrentView = (View) object; } public View getCurrentItem() { return mCurrentView; } } 

Y esta es mi clase ViewPager

 class CustomViewPager extends ViewPager { private CustomViewPagerAdapter mAdapter; ... // Set ViewPager height to currentItem @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = 0; View v = mAdapter.getCurrentItem(); if(v != null) { v.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); height = v.getMeasuredHeight(); } heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } 

Con esto puedo colapsar / expand ViewPager childs y será medir su altura correctamente, y mide cuando la página se cambia con un poco de retraso.

  • Viewpager con altura dinámica no funciona (siempre use la altura del primer fragmento)
  • TextView dentro de ViewPager intercepta eventos de toque
  • Fragmentos anidados getchildfragmentmanager causando un bloqueo
  • La altura de ViewPager en el diseño del Coordinador está más que disponible
  • Cómo habilitar el escucha de taps en el buscapersonas de vista en Android?
  • Android ViewPager obtiene la vista actual
  • Android: desplazamiento horizontal de varios elementos visibles
  • ¿Cómo se crea un Android View Pager con un indicador de puntos?
  • Viewpager no se muestra dentro de la fila RecyclerView
  • ¿Es posible tener un ViewPager dentro de un ScrollView?
  • Actualizar la actividad de la fuente antes de la transición de salida
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.