У меня есть экран чата, который содержит два вида: просмотр ресайклера для отображения предыдущего чата и пользовательский вид, который инкапсулирует текст редактирования, кнопку отправки и другое представление ресайзера, чтобы позволить пользователю выбирать другие вещи для отправки, как фотографии, и т. Д. Это настраиваемое представление называется «панель».RecyclerView не уважает height = wrap_content?
Итак, мой чат деятельность имеет следующую структуру:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<chat.example.app.widget.Panel
style="@style/PanelStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:id="@+id/panel" />
<android.support.v7.widget.RecyclerView
android:background="@android:color/holo_red_dark"
android:layout_margin="@dimen/activity_horizontal_margin"
android:scrollbars="vertical"
android:id="@+id/previous_chat"
android:layout_above="@id/panel"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
и моя «Группа» точка зрения имеет следующую структуру:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white">
<RelativeLayout
android:id="@+id/staging_area_root"
android:layout_gravity="center"
android:gravity="center"
android:paddingLeft="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Chat box and send -->
</RelativeLayout>
<!-- THIS GUY IS PROBLEMATIC -->
<android.support.v7.widget.RecyclerView
android:id="@+id/card_set"
android:layout_margin="15dp"
android:layout_below="@id/staging_area_root"
android:background="@android:color/holo_blue_bright"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
Проблема в том, что вид утилизатора от Panel
заглатывает весь экран. Поэтому все, что я вижу, - это проблематичный просмотр ресайклеров из класса Panel.
Оба этих вида ресайклеров имеют назначенные им LinearLayoutManager
. Адаптеры.
Я имею последнюю библиотеку поддержки в моем build.gradle
:
compile 'com.android.support:recyclerview-v7:23.2.0'
и перебирая новейшие андроид разработчиков в блоге сообщение:
Этот релиз приносит захватывающую новую функцию в API LayoutManager: автоматическое измерение! Это позволяет RecyclerView самому размеру на основе размера его содержимого. Это означает, что ранее недоступные сценарии , такие как использование WRAP_CONTENT для измерения RecyclerView, теперь возможны. Вы найдете все встроенные в LayoutManagers теперь поддерживают автоматическое измерение.
Я что-то пропустил?
Обновление 1:
Я добавил адаптер г-ну проблематичной зрения ресайклера с 0 элементов в нем. Все еще нет решения.
Update2:
Скриншот:
Вместо использования 'android: layout_gravity' на вашей' панели' используйте 'android: layout_alignParentBottom' и' android: layout_centerHorizontal'. Я скопировал - вставил ваши макеты, удалив XML-панель 'Panel' и заменив ее на свой макет xml, и все выглядит хорошо на предварительном просмотре в Android Studio. –
@AlexTownsend не повезло. В качестве обновления я ** ** ** использую 'alignParentBottom'. Не обновил код здесь. Возможно, это имеет какое-то отношение к тому, как создается мое пользовательское представление? –
Вы можете разместить снимок экрана Preview в Android Studio или скриншот экрана с устройства/эмулятора? –