Intereting Posts
Не удается получить соответствующие UDP-пакеты с использованием SSDP Подключено мобильное устройство (Android) в качестве MTP, теперь мы можем получить доступ к этому устройству и получить время Связь между двумя приложениями Хорошо ли понимать, что Activity похожа на ViewController в iOS? Как отключить прокрутку RecyclerView, кроме программных PhoneGap / Кордова Разработка Android Мое приложение Android Android теряет значения, хранящиеся в localStorage, когда он отключается. Кто-нибудь еще видит эту проблему? В Android должен каждый экран быть собственным Управлением или макетом? Сбой карты Google с помощью ресурсов $ NotFoundException при замене в FrameLayout Где константа запроса (64206) для входа в систему, определенная в Facebook SDK Загрузка нескольких изображений с помощью волейбола? Развернуть все дочерние элементы в расширенном виде списка Показать .gif с android.graphics.Movie Инициирование видеозвонка Когда используется функция onActivityResult фрагмента в отношении жизненного цикла фрагментов?

Проблема с высотой RecyclerView в API 17 и API 16 – Android

Я использую RecyclerView в своем приложении, чтобы показать список вещей. На моем LG Nexus 5 (Android 5.1 M), если я установил целевой SDK на 16 или 17 (в основном для имитации того, что происходит на этих телефонах с api 16, 17), высота строки в списке резко меняется.

Однако это не происходит в API 18 или 18+. Я не могу понять, почему это происходит и каков оптимальный подход к решению этой проблемы.

Еще одна вещь: я использую ImageView внутри строки списка. Это происходит, когда в моем ImageView я загружаю изображения с сервера. Для этого я использую библиотеку ImageLoader . Однако, если я использую статические изображения, то у меня нет этой проблемы

Solutions Collecting From Web of "Проблема с высотой RecyclerView в API 17 и API 16 – Android"

«Если я использую статические изображения, то у меня нет этой проблемы». При использовании статических изображений они загружаются во время onLayout() для вашего ImageView . Когда изображение загружается во время компоновки, оно влияет на измеренный размер в onMeasure() .

Если изображение не установлено статически (т.е. отключено по сети async), ImageView не может полагаться на размер изображения, чтобы определить его размер. Когда изображение загружено, оно будет уменьшено, чтобы соответствовать существующему измеренному ImageView .

Решения:

  • Укажите minHeight на вашем minHeight ImageView или строке
  • ИЛИ Укажите фиксированную высоту на вашем ImageView или строке

Если вы знаете, какой размер вы хотите для своей строки, вы должны использовать фиксированную высоту.

Существуют стили по умолчанию для RecyclerView которые могут устанавливать атрибуты, такие как minHeight для макета строки, которые могут варьироваться в зависимости от версий API. Таким образом, без явной установки фиксированного или minHeight самостоятельно вы можете увидеть другое поведение в версиях API.

У меня также есть проблема с высотой recyclerView, так что нашел решение. Дайте высоту из java-кода. Меня устраивает.

 recyclerView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO Auto-generated method stub //use your layout recyclerTagScroll.getViewTreeObserver().removeGlobalOnLayoutListener(this); RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) recyclerTagScroll .getLayoutParams(); params.height = recyclerTagScroll.getChildAt(0).getHeight(); recyclerTagScroll.setLayoutParams(params); } });