В основном у меня есть пользовательский View-Class (MessageViewAudio
), который расширяет ConstraintLayout
.Это пользовательское представление содержит другое ConstraintLayout
, которое содержит другое пользовательское представление (AudioVisualizationView
), которое я сделал сам.Проблема заключается в том, что представление Top-Layer-Custom (MessageViewAudio
) всегда имеет некоторое пространство справа.Я приложил информацию, которую дал мне инспектор по макету.Если вам нужно больше кода, просто дайте мне знать.
Как уже было сказано, я проверил макет и попробовал различные типы контейнеров и вручную попытался удалить поля и отступы из каждого вида, упомянутого выше.Но инспектор по макету уже говорит, что нет отступов для отступов полей, которые могли бы вызвать такое странное поведение. Есть два способа заставить это работать Первый: удалить все контейнеры и просто добавить пользовательское представление AudioVisualizationView
.Второе: удалить свойство constrainedWidth = true из параметров LayoutParams MessageViewAudio
.Теперь мне нужно constrainedWidth = true, но у меня такое чувство, что это свойство является своего рода проблемой, я не могу просто понять, почему constrainedWidth приводит к такому поведению.
С контейнерами
Не работает
![The hierarchy](https://i.imgur.com/jQL1mNh.png)
Иерархия
![The hierarchy](https://i.imgur.com/9QmTrRS.png)
ChatMessage
![The layout](https://i.imgur.com/3AeTs0H.png)
MessageViewAudio
![The layout](https://i.imgur.com/w4Rw3zJ.png)
audioContent
![The layout](https://i.imgur.com/50YLeEj.png)
визуализацияПросмотр
![The layout](https://i.imgur.com/CK0OxR3.png)
Без контейнеров
Работает
![Working](https://i.imgur.com/yfSionU.png)
Единственный код, который я могу сейчас предоставить, - это 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>
Все остальные создаются программно
В общем, моя проблема в том, что я не понимаю, откуда появляется это пространство справа от пользовательского представления.