Пользовательский вид имеет странное поведение макета - PullRequest
0 голосов
/ 06 февраля 2019

В основном у меня есть пользовательский View-Class (MessageViewAudio), который расширяет ConstraintLayout.Это пользовательское представление содержит другое ConstraintLayout, которое содержит другое пользовательское представление (AudioVisualizationView), которое я сделал сам.Проблема заключается в том, что представление Top-Layer-Custom (MessageViewAudio) всегда имеет некоторое пространство справа.Я приложил информацию, которую дал мне инспектор по макету.Если вам нужно больше кода, просто дайте мне знать.

Как уже было сказано, я проверил макет и попробовал различные типы контейнеров и вручную попытался удалить поля и отступы из каждого вида, упомянутого выше.Но инспектор по макету уже говорит, что нет отступов для отступов полей, которые могли бы вызвать такое странное поведение. Есть два способа заставить это работать Первый: удалить все контейнеры и просто добавить пользовательское представление AudioVisualizationView.Второе: удалить свойство constrainedWidth = true из параметров LayoutParams MessageViewAudio.Теперь мне нужно constrainedWidth = true, но у меня такое чувство, что это свойство является своего рода проблемой, я не могу просто понять, почему constrainedWidth приводит к такому поведению.

С контейнерами

Не работает

The hierarchy

Иерархия

The hierarchy

ChatMessage

The layout

MessageViewAudio

The layout

audioContent

The layout

визуализацияПросмотр

The layout

Без контейнеров

Работает

Working

Единственный код, который я могу сейчас предоставить, - это xml представлений: audioContent + visualizationView:

<com.jooyapp.jooy.custom_views.RoundedConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/audioContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:backgroundColor="@color/colorAccent"
    app:radius="20">

    <!--android:paddingStart="10dp"-->
    <!--android:paddingTop="10dp"-->
    <!--android:paddingEnd="10dp"-->
    <!--android:paddingBottom="10dp"-->

    <com.jooyapp.jooy.custom_views.AudioVisualizationView
        android:id="@+id/visualizationView"
        android:layout_width="wrap_content"
        android:background="@color/light_grey"
        android:layout_height="wrap_content" />

</com.jooyapp.jooy.custom_views.RoundedConstraintLayout>

Все остальные создаются программно

В общем, моя проблема в том, что я не понимаю, откуда появляется это пространство справа от пользовательского представления.

...