diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java
index 87d3eb18f4..8bd19193c5 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java
@@ -130,6 +130,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
private ComposeView raiseHandSnackbar;
private View missingPermissionContainer;
private MaterialButton allowAccessButton;
+ private Guideline callParticipantsOverflowGuideline;
private WebRtcCallParticipantsPagerAdapter pagerAdapter;
private WebRtcCallParticipantsRecyclerAdapter recyclerAdapter;
@@ -164,50 +165,51 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
protected void onFinishInflate() {
super.onFinishInflate();
- audioToggle = findViewById(R.id.call_screen_speaker_toggle);
- videoToggle = findViewById(R.id.call_screen_video_toggle);
- micToggle = findViewById(R.id.call_screen_audio_mic_toggle);
- smallLocalRenderFrame = findViewById(R.id.call_screen_pip);
- smallLocalRender = findViewById(R.id.call_screen_small_local_renderer);
- largeLocalRenderFrame = findViewById(R.id.call_screen_large_local_renderer_frame);
- largeLocalRender = findViewById(R.id.call_screen_large_local_renderer);
- largeLocalRenderNoVideo = findViewById(R.id.call_screen_large_local_video_off);
- largeLocalRenderNoVideoAvatar = findViewById(R.id.call_screen_large_local_video_off_avatar);
- recipientName = findViewById(R.id.call_screen_recipient_name);
- status = findViewById(R.id.call_screen_status);
- incomingRingStatus = findViewById(R.id.call_screen_incoming_ring_status);
- answer = findViewById(R.id.call_screen_answer_call);
- answerWithoutVideoLabel = findViewById(R.id.call_screen_answer_without_video_label);
- cameraDirectionToggle = findViewById(R.id.call_screen_camera_direction_toggle);
- ringToggle = findViewById(R.id.call_screen_audio_ring_toggle);
- overflow = findViewById(R.id.call_screen_overflow_button);
- hangup = findViewById(R.id.call_screen_end_call);
- answerWithoutVideo = findViewById(R.id.call_screen_answer_without_video);
- topGradient = findViewById(R.id.call_screen_header_gradient);
- footerGradient = findViewById(R.id.call_screen_footer_gradient);
- startCallControls = findViewById(R.id.call_screen_start_call_controls);
- callParticipantsPager = findViewById(R.id.call_screen_participants_pager);
- callParticipantsRecycler = findViewById(R.id.call_screen_participants_recycler);
- largeHeader = findViewById(R.id.call_screen_header);
- startCall = findViewById(R.id.call_screen_start_call_start_call);
- errorButton = findViewById(R.id.call_screen_error_cancel);
- groupCallSpeakerHint = new Stub<>(findViewById(R.id.call_screen_group_call_speaker_hint));
- groupCallFullStub = new Stub<>(findViewById(R.id.group_call_call_full_view));
- showParticipantsGuideline = findViewById(R.id.call_screen_show_participants_guideline);
- aboveControlsGuideline = findViewById(R.id.call_screen_above_controls_guideline);
- topFoldGuideline = findViewById(R.id.fold_top_guideline);
- callScreenTopFoldGuideline = findViewById(R.id.fold_top_call_screen_guideline);
- largeHeaderAvatar = findViewById(R.id.call_screen_header_avatar);
- fullScreenShade = findViewById(R.id.call_screen_full_shade);
- collapsedToolbar = findViewById(R.id.webrtc_call_view_toolbar_text);
- headerToolbar = findViewById(R.id.webrtc_call_view_toolbar_no_text);
- pendingParticipantsViewStub = new Stub<>(findViewById(R.id.call_screen_pending_recipients));
- callLinkWarningCard = new Stub<>(findViewById(R.id.call_screen_call_link_warning));
- groupReactionsFeed = findViewById(R.id.call_screen_reactions_feed);
- reactionViews = findViewById(R.id.call_screen_reactions_container);
- raiseHandSnackbar = findViewById(R.id.call_screen_raise_hand_view);
- missingPermissionContainer = findViewById(R.id.missing_permissions_container);
- allowAccessButton = findViewById(R.id.allow_access_button);
+ audioToggle = findViewById(R.id.call_screen_speaker_toggle);
+ videoToggle = findViewById(R.id.call_screen_video_toggle);
+ micToggle = findViewById(R.id.call_screen_audio_mic_toggle);
+ smallLocalRenderFrame = findViewById(R.id.call_screen_pip);
+ smallLocalRender = findViewById(R.id.call_screen_small_local_renderer);
+ largeLocalRenderFrame = findViewById(R.id.call_screen_large_local_renderer_frame);
+ largeLocalRender = findViewById(R.id.call_screen_large_local_renderer);
+ largeLocalRenderNoVideo = findViewById(R.id.call_screen_large_local_video_off);
+ largeLocalRenderNoVideoAvatar = findViewById(R.id.call_screen_large_local_video_off_avatar);
+ recipientName = findViewById(R.id.call_screen_recipient_name);
+ status = findViewById(R.id.call_screen_status);
+ incomingRingStatus = findViewById(R.id.call_screen_incoming_ring_status);
+ answer = findViewById(R.id.call_screen_answer_call);
+ answerWithoutVideoLabel = findViewById(R.id.call_screen_answer_without_video_label);
+ cameraDirectionToggle = findViewById(R.id.call_screen_camera_direction_toggle);
+ ringToggle = findViewById(R.id.call_screen_audio_ring_toggle);
+ overflow = findViewById(R.id.call_screen_overflow_button);
+ hangup = findViewById(R.id.call_screen_end_call);
+ answerWithoutVideo = findViewById(R.id.call_screen_answer_without_video);
+ topGradient = findViewById(R.id.call_screen_header_gradient);
+ footerGradient = findViewById(R.id.call_screen_footer_gradient);
+ startCallControls = findViewById(R.id.call_screen_start_call_controls);
+ callParticipantsPager = findViewById(R.id.call_screen_participants_pager);
+ callParticipantsRecycler = findViewById(R.id.call_screen_participants_recycler);
+ largeHeader = findViewById(R.id.call_screen_header);
+ startCall = findViewById(R.id.call_screen_start_call_start_call);
+ errorButton = findViewById(R.id.call_screen_error_cancel);
+ groupCallSpeakerHint = new Stub<>(findViewById(R.id.call_screen_group_call_speaker_hint));
+ groupCallFullStub = new Stub<>(findViewById(R.id.group_call_call_full_view));
+ showParticipantsGuideline = findViewById(R.id.call_screen_show_participants_guideline);
+ aboveControlsGuideline = findViewById(R.id.call_screen_above_controls_guideline);
+ topFoldGuideline = findViewById(R.id.fold_top_guideline);
+ callScreenTopFoldGuideline = findViewById(R.id.fold_top_call_screen_guideline);
+ largeHeaderAvatar = findViewById(R.id.call_screen_header_avatar);
+ fullScreenShade = findViewById(R.id.call_screen_full_shade);
+ collapsedToolbar = findViewById(R.id.webrtc_call_view_toolbar_text);
+ headerToolbar = findViewById(R.id.webrtc_call_view_toolbar_no_text);
+ pendingParticipantsViewStub = new Stub<>(findViewById(R.id.call_screen_pending_recipients));
+ callLinkWarningCard = new Stub<>(findViewById(R.id.call_screen_call_link_warning));
+ groupReactionsFeed = findViewById(R.id.call_screen_reactions_feed);
+ reactionViews = findViewById(R.id.call_screen_reactions_container);
+ raiseHandSnackbar = findViewById(R.id.call_screen_raise_hand_view);
+ missingPermissionContainer = findViewById(R.id.missing_permissions_container);
+ allowAccessButton = findViewById(R.id.allow_access_button);
+ callParticipantsOverflowGuideline = findViewById(R.id.call_screen_participants_overflow_guideline);
View decline = findViewById(R.id.call_screen_decline_call);
View answerLabel = findViewById(R.id.call_screen_answer_call_label);
@@ -376,6 +378,12 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
pictureInPictureGestureHelper.setBottomVerticalBoundary(topOfControls);
});
}
+
+ if (callParticipantsOverflowGuideline != null) {
+ callParticipantsRecycler.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+ callParticipantsOverflowGuideline.setGuidelineEnd(bottom - top);
+ });
+ }
}
@Override
diff --git a/app/src/main/res/layout/webrtc_call_controls.xml b/app/src/main/res/layout/webrtc_call_controls.xml
index 35b45bc50a..8718e4bb32 100644
--- a/app/src/main/res/layout/webrtc_call_controls.xml
+++ b/app/src/main/res/layout/webrtc_call_controls.xml
@@ -56,6 +56,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
+ app:layout_goneMarginBottom="32dp"
app:layout_constraintBottom_toTopOf="@id/call_screen_pending_recipients"
app:layout_constraintEnd_toEndOf="parent" />
@@ -67,7 +68,7 @@
android:layout_marginBottom="32dp"
android:inflatedId="@+id/call_screen_pending_recipients"
android:layout="@layout/call_screen_pending_participants_view"
- app:layout_constraintBottom_toTopOf="@id/call_screen_camera_direction_toggle"
+ app:layout_constraintBottom_toTopOf="@id/call_screen_participants_overflow_guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
@@ -84,7 +85,7 @@
android:text="@string/WebRtcCallView__waiting_to_be_let_in"
android:textAppearance="@style/Signal.Text.BodyLarge"
android:visibility="gone"
- app:layout_constraintBottom_toTopOf="@id/call_screen_camera_direction_toggle"
+ app:layout_constraintBottom_toTopOf="@id/call_screen_participants_overflow_guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
@@ -111,6 +112,13 @@
app:barrierDirection="top"
app:constraint_referenced_ids="call_screen_camera_direction_toggle,call_screen_pending_recipients,call_screen_raise_hand_view" />
+
+