Intereting Posts
В Android, можно ли перехватить ключевые события во всем мире, прежде чем они достигнут вид ребенка, который имеет фокус? Viewpager не отображается, если у него есть другой макет в качестве его родного брата Как динамически создавать группы и дочерние элементы в расширяемом списке из json в android? Android analytics v4 наиболее упрощенный Программно определить, разрешена ли установка из неизвестных источников Установка google_app_id без google_play_services.json или gradle Android убивает мою пусковую установку на BT connect Избегайте попыток / уловки на Android Добавление строк в Cursor вручную Невозможно мультиплексировать как аудио, так и видео Как использовать ADB в Android Studio для просмотра SQLite DB Можно ли получить доступ к функциям NFC из приложения React Обнаружение обратного события на клавиатуре Android Ошибки Proguard с внешним банком – возвращает код ошибки 1 Почему кнопка не центрирована по вертикали в LinearLayout?

Пересчитать ScrollView на разных представлениях ViewFlipper?

У меня есть ScrolLView, который обертывает ViewFlipper. Содержимое в ViewFlipper не имеет одинаковой высоты, поэтому мой второй экран имеет очень длинную полосу прокрутки, которая продолжается и продолжается с пустым содержимым:

<ScrollView android:id="@+id/outer_scroll" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true"> <ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/desc" style="@style/DescriptionArea" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:focusableInTouchMode="false" android:background="@null" /> <LinearLayout android:id="@+id/details_root" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp"> <TextView android:id="@+id/item_details" style="@style/DetailsLarge" android:textColor="#000" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="@string/item_details_tags" /> <TextView android:id="@+id/tags" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#000" android:visibility="gone" /> </LinearLayout> </ViewFlipper> </ScrollView> 

Так, например, блок EditText очень длинный, и полоса прокрутки захватывает все это. Я бросаюсь в LinearLayout, и полоса прокрутки проходит мимо содержимого TextView. По существу, мне нужно «пересчитать» высоту обзора.

Кроме того, обертка EditText и LinearLayout в их собственных ScrollViews не является вариантом, потому что тогда мягкая / виртуальная клавиатура блокирует содержимое EditText.

Solutions Collecting From Web of "Пересчитать ScrollView на разных представлениях ViewFlipper?"

Во время измерения ViewFlipper (а также ViewSwitcher, TextSwitcher и т. Д. – все потомки ViewAnimator) будут по умолчанию иметь размер в соответствии с самым большим дочерним элементом, включая невидимые.

Установите для параметра MeasureAllChildren флаг значение false, чтобы изменить это поведение, чтобы использовать только текущий видимый дочерний элемент при измерении размера:

 ViewFlipper flipper = (ViewFlipper)findViewById(R.id.flipper); flipper.setMeasureAllChildren(false); 

Если вы делаете свой viewflipper в xml, вы также можете использовать android: measureAllChildren = "false".