From 64d98aefb4dee7fd510e828b0fc131b2e2e55acc Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Thu, 1 Jul 2021 19:47:06 +0200 Subject: [PATCH 1/8] - set bottom margin for grid for voicecall - temporarily comment out setOnTouchListener for grid (disables toggle of controls for now) - set android:scrollbars="vertical" for gridview - add callControlsHeight for item height calculation - add fake height to item that scrolling is testable Signed-off-by: Marcel Hibbe --- .../talk/adapters/ParticipantsAdapter.java | 18 +++++++-- .../talk/controllers/CallController.java | 38 ++++++++++++------- app/src/main/res/layout/controller_call.xml | 2 + 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java index 83a8ec453..eb14d8cc0 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java @@ -33,18 +33,21 @@ public class ParticipantsAdapter extends BaseAdapter { private final ArrayList participantDisplayItems; private final RelativeLayout gridViewWrapper; private final LinearLayout callInfosLinearLayout; + private final LinearLayout callControlsLinearLayout; private final int columns; private final boolean isVoiceOnlyCall; public ParticipantsAdapter(Context mContext, Map participantDisplayItems, RelativeLayout gridViewWrapper, - LinearLayout linearLayout, + LinearLayout callInfosLinearLayout, + LinearLayout callControlsLinearLayout, int columns, boolean isVoiceOnlyCall) { this.mContext = mContext; this.gridViewWrapper = gridViewWrapper; - this.callInfosLinearLayout = linearLayout; + this.callInfosLinearLayout = callInfosLinearLayout; + this.callControlsLinearLayout = callControlsLinearLayout; this.columns = columns; this.isVoiceOnlyCall = isVoiceOnlyCall; @@ -136,11 +139,18 @@ public class ParticipantsAdapter extends BaseAdapter { private int scaleGridViewItemHeight() { int headerHeight = 0; + int callControlsHeight = 0; if (callInfosLinearLayout.getVisibility() == View.VISIBLE && isVoiceOnlyCall) { headerHeight = callInfosLinearLayout.getHeight(); } - int itemHeight = (gridViewWrapper.getHeight() - headerHeight) / getRowsCount(getCount()); - return itemHeight; + if (callControlsLinearLayout.getVisibility() == View.VISIBLE && isVoiceOnlyCall) { + callControlsHeight = callControlsLinearLayout.getHeight(); + } + int itemHeight = (gridViewWrapper.getHeight() - headerHeight - callControlsHeight) / getRowsCount(getCount()); +// if (itemHeight < 9000) { +// itemHeight = 9000; +// } + return itemHeight + 10; } private int getRowsCount(int items) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index b100793f8..10f67e371 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -49,10 +49,6 @@ import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - import com.bluelinelabs.logansquare.LoganSquare; import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; @@ -143,6 +139,9 @@ import java.util.concurrent.TimeUnit; import javax.inject.Inject; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import autodagger.AutoInjector; import butterknife.BindView; import butterknife.OnClick; @@ -484,8 +483,10 @@ public class CallController extends BaseController { cameraControlButton.setVisibility(View.GONE); pipVideoView.setVisibility(View.GONE); - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.BELOW, R.id.callInfosLinearLayout); + params.setMargins(0,0,0,400); gridView.setLayoutParams(params); } else { callControlEnableSpeaker.setVisibility(View.GONE); @@ -502,15 +503,15 @@ public class CallController extends BaseController { pipVideoView.setOnTouchListener(new SelfVideoTouchListener()); } - gridView.setOnTouchListener(new View.OnTouchListener() { - public boolean onTouch(View v, MotionEvent me) { - int action = me.getActionMasked(); - if (action == MotionEvent.ACTION_DOWN) { - showCallControls(); - } - return true; - } - }); +// gridView.setOnTouchListener(new View.OnTouchListener() { +// public boolean onTouch(View v, MotionEvent me) { +// int action = me.getActionMasked(); +// if (action == MotionEvent.ACTION_DOWN) { +// showCallControls(); +// } +// return true; +// } +// }); initGridAdapter(); } @@ -561,11 +562,20 @@ public class CallController extends BaseController { } }); + LinearLayout callControlsLinearLayout = controllerCallLayout.findViewById(R.id.callControlsLinearLayout); + callControlsLinearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + callControlsLinearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } + }); + participantsAdapter = new ParticipantsAdapter( this.getActivity(), participantDisplayItems, gridViewWrapper, callInfosLinearLayout, + callControlsLinearLayout, columns, isVoiceOnlyCall); gridView.setAdapter(participantsAdapter); diff --git a/app/src/main/res/layout/controller_call.xml b/app/src/main/res/layout/controller_call.xml index 573f91bdf..0da8af1f5 100644 --- a/app/src/main/res/layout/controller_call.xml +++ b/app/src/main/res/layout/controller_call.xml @@ -52,6 +52,8 @@ android:gravity="center" android:stretchMode="columnWidth" android:numColumns="2" + android:scrollbars="vertical" + android:background="#fff000" /> Date: Thu, 1 Jul 2021 21:57:08 +0200 Subject: [PATCH 2/8] set constants for min item height and call controls height Signed-off-by: Marcel Hibbe --- .../talk/adapters/ParticipantsAdapter.java | 17 ++++++++--------- .../talk/controllers/CallController.java | 13 +++---------- app/src/main/res/layout/controller_call.xml | 1 - 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java index eb14d8cc0..254776519 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java @@ -15,6 +15,7 @@ import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; +import com.nextcloud.talk.controllers.CallController; import com.nextcloud.talk.utils.DisplayUtils; import org.webrtc.MediaStream; @@ -28,12 +29,12 @@ import java.util.Map; public class ParticipantsAdapter extends BaseAdapter { private static final String TAG = "ParticipantsAdapter"; + private static final int ITEM_MIN_HEIGHT = 500; private final Context mContext; private final ArrayList participantDisplayItems; private final RelativeLayout gridViewWrapper; private final LinearLayout callInfosLinearLayout; - private final LinearLayout callControlsLinearLayout; private final int columns; private final boolean isVoiceOnlyCall; @@ -41,13 +42,11 @@ public class ParticipantsAdapter extends BaseAdapter { Map participantDisplayItems, RelativeLayout gridViewWrapper, LinearLayout callInfosLinearLayout, - LinearLayout callControlsLinearLayout, int columns, boolean isVoiceOnlyCall) { this.mContext = mContext; this.gridViewWrapper = gridViewWrapper; this.callInfosLinearLayout = callInfosLinearLayout; - this.callControlsLinearLayout = callControlsLinearLayout; this.columns = columns; this.isVoiceOnlyCall = isVoiceOnlyCall; @@ -143,14 +142,14 @@ public class ParticipantsAdapter extends BaseAdapter { if (callInfosLinearLayout.getVisibility() == View.VISIBLE && isVoiceOnlyCall) { headerHeight = callInfosLinearLayout.getHeight(); } - if (callControlsLinearLayout.getVisibility() == View.VISIBLE && isVoiceOnlyCall) { - callControlsHeight = callControlsLinearLayout.getHeight(); + if (isVoiceOnlyCall) { + callControlsHeight = CallController.CALL_CONTROLS_HEIGHT; } int itemHeight = (gridViewWrapper.getHeight() - headerHeight - callControlsHeight) / getRowsCount(getCount()); -// if (itemHeight < 9000) { -// itemHeight = 9000; -// } - return itemHeight + 10; + if (itemHeight < ITEM_MIN_HEIGHT) { + itemHeight = ITEM_MIN_HEIGHT; + } + return itemHeight; } private int getRowsCount(int items) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 10f67e371..72736a15b 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -163,6 +163,8 @@ public class CallController extends BaseController { private static final String TAG = "CallController"; + public static final int CALL_CONTROLS_HEIGHT = 300; + private static final String[] PERMISSIONS_CALL = { android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO, @@ -486,7 +488,7 @@ public class CallController extends BaseController { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.BELOW, R.id.callInfosLinearLayout); - params.setMargins(0,0,0,400); + params.setMargins(0,0,0, CALL_CONTROLS_HEIGHT); gridView.setLayoutParams(params); } else { callControlEnableSpeaker.setVisibility(View.GONE); @@ -562,20 +564,11 @@ public class CallController extends BaseController { } }); - LinearLayout callControlsLinearLayout = controllerCallLayout.findViewById(R.id.callControlsLinearLayout); - callControlsLinearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - callControlsLinearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); - } - }); - participantsAdapter = new ParticipantsAdapter( this.getActivity(), participantDisplayItems, gridViewWrapper, callInfosLinearLayout, - callControlsLinearLayout, columns, isVoiceOnlyCall); gridView.setAdapter(participantsAdapter); diff --git a/app/src/main/res/layout/controller_call.xml b/app/src/main/res/layout/controller_call.xml index 0da8af1f5..bef06e1c8 100644 --- a/app/src/main/res/layout/controller_call.xml +++ b/app/src/main/res/layout/controller_call.xml @@ -53,7 +53,6 @@ android:stretchMode="columnWidth" android:numColumns="2" android:scrollbars="vertical" - android:background="#fff000" /> Date: Thu, 1 Jul 2021 21:59:11 +0200 Subject: [PATCH 3/8] return false for ridView.setOnTouchListener NOT TESTED should allow both click and scrolling? Signed-off-by: Marcel Hibbe --- .../talk/controllers/CallController.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 72736a15b..cf7042af3 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -505,15 +505,15 @@ public class CallController extends BaseController { pipVideoView.setOnTouchListener(new SelfVideoTouchListener()); } -// gridView.setOnTouchListener(new View.OnTouchListener() { -// public boolean onTouch(View v, MotionEvent me) { -// int action = me.getActionMasked(); -// if (action == MotionEvent.ACTION_DOWN) { -// showCallControls(); -// } -// return true; -// } -// }); + gridView.setOnTouchListener(new View.OnTouchListener() { + public boolean onTouch(View v, MotionEvent me) { + int action = me.getActionMasked(); + if (action == MotionEvent.ACTION_DOWN) { + showCallControls(); + } + return false; + } + }); initGridAdapter(); } From 99b247850b2ec15ab12f36888fff0c4f55dd0fba Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Fri, 2 Jul 2021 12:03:47 +0200 Subject: [PATCH 4/8] set minHeight for call item by dp reduce number of possible columns to avoid design issues Signed-off-by: Marcel Hibbe --- .../nextcloud/talk/adapters/ParticipantsAdapter.java | 6 +++--- .../com/nextcloud/talk/controllers/CallController.java | 10 +++------- app/src/main/res/layout/call_item.xml | 7 +++++-- app/src/main/res/values/dimens.xml | 2 ++ 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java index 254776519..282f08032 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java @@ -29,7 +29,6 @@ import java.util.Map; public class ParticipantsAdapter extends BaseAdapter { private static final String TAG = "ParticipantsAdapter"; - private static final int ITEM_MIN_HEIGHT = 500; private final Context mContext; private final ArrayList participantDisplayItems; @@ -146,8 +145,9 @@ public class ParticipantsAdapter extends BaseAdapter { callControlsHeight = CallController.CALL_CONTROLS_HEIGHT; } int itemHeight = (gridViewWrapper.getHeight() - headerHeight - callControlsHeight) / getRowsCount(getCount()); - if (itemHeight < ITEM_MIN_HEIGHT) { - itemHeight = ITEM_MIN_HEIGHT; + int itemMinHeight = Math.round(mContext.getResources().getDimension(R.dimen.call_grid_item_min_height)); + if (itemHeight < itemMinHeight) { + itemHeight = itemMinHeight; } return itemHeight; } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index cf7042af3..d3d702f7d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -524,18 +524,14 @@ public class CallController extends BaseController { int columns; int participantsInGrid = participantDisplayItems.size(); - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { - if (participantsInGrid > 8) { - columns = 3; - } else if (participantsInGrid > 2) { + if (getResources() != null && getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { + if (participantsInGrid > 2) { columns = 2; } else { columns = 1; } } else { - if (participantsInGrid > 8) { - columns = 4; - } else if (participantsInGrid > 2) { + if (participantsInGrid > 2) { columns = 3; } else if (participantsInGrid > 1) { columns = 2; diff --git a/app/src/main/res/layout/call_item.xml b/app/src/main/res/layout/call_item.xml index 4cfe5ede0..1051a1fff 100644 --- a/app/src/main/res/layout/call_item.xml +++ b/app/src/main/res/layout/call_item.xml @@ -24,6 +24,7 @@ + android:textColor="@android:color/white" + tools:text="Bill Murray"/> + android:visibility="invisible" + tools:visibility="visible"/> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 8f76e5cc3..4b140e348 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -57,4 +57,6 @@ 8dp 8dp 400dp + + 180dp From 47f535fdc9d28f7731a918ded329c9475b482934 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Fri, 2 Jul 2021 12:51:58 +0200 Subject: [PATCH 5/8] limit text length of participant name Signed-off-by: Marcel Hibbe --- app/src/main/res/layout/call_item.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/call_item.xml b/app/src/main/res/layout/call_item.xml index 1051a1fff..7ee20f0d5 100644 --- a/app/src/main/res/layout/call_item.xml +++ b/app/src/main/res/layout/call_item.xml @@ -51,8 +51,11 @@ android:layout_alignParentBottom="true" android:layout_marginBottom="6dp" android:layout_marginStart="10dp" + android:ellipsize="end" + android:maxEms="8" + android:maxLines="1" android:textColor="@android:color/white" - tools:text="Bill Murray"/> + tools:text="Bill Murray 12345678901234567890"/> Date: Fri, 2 Jul 2021 13:09:26 +0200 Subject: [PATCH 6/8] define call controls height in dimens.xml Signed-off-by: Marcel Hibbe --- .../talk/adapters/ParticipantsAdapter.java | 3 +-- .../talk/controllers/CallController.java | 6 +++--- app/src/main/res/layout/controller_call.xml | 15 +++++++-------- app/src/main/res/values/dimens.xml | 1 + 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java index 282f08032..d0b4b43fc 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantsAdapter.java @@ -15,7 +15,6 @@ import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; -import com.nextcloud.talk.controllers.CallController; import com.nextcloud.talk.utils.DisplayUtils; import org.webrtc.MediaStream; @@ -142,7 +141,7 @@ public class ParticipantsAdapter extends BaseAdapter { headerHeight = callInfosLinearLayout.getHeight(); } if (isVoiceOnlyCall) { - callControlsHeight = CallController.CALL_CONTROLS_HEIGHT; + callControlsHeight = Math.round(mContext.getResources().getDimension(R.dimen.call_controls_height)); } int itemHeight = (gridViewWrapper.getHeight() - headerHeight - callControlsHeight) / getRowsCount(getCount()); int itemMinHeight = Math.round(mContext.getResources().getDimension(R.dimen.call_grid_item_min_height)); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index d3d702f7d..adfbe6816 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -163,8 +163,6 @@ public class CallController extends BaseController { private static final String TAG = "CallController"; - public static final int CALL_CONTROLS_HEIGHT = 300; - private static final String[] PERMISSIONS_CALL = { android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO, @@ -488,7 +486,9 @@ public class CallController extends BaseController { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.BELOW, R.id.callInfosLinearLayout); - params.setMargins(0,0,0, CALL_CONTROLS_HEIGHT); + int callControlsHeight = + Math.round(getApplicationContext().getResources().getDimension(R.dimen.call_controls_height)); + params.setMargins(0,0,0, callControlsHeight); gridView.setLayoutParams(params); } else { callControlEnableSpeaker.setVisibility(View.GONE); diff --git a/app/src/main/res/layout/controller_call.xml b/app/src/main/res/layout/controller_call.xml index bef06e1c8..17f397460 100644 --- a/app/src/main/res/layout/controller_call.xml +++ b/app/src/main/res/layout/controller_call.xml @@ -134,18 +134,17 @@ + android:layout_alignBottom="@id/linearWrapperLayout"> 400dp 180dp + 110dp From 61fd18a0ca6ffa2fc5ebf45556d23e6d85510c4a Mon Sep 17 00:00:00 2001 From: drone Date: Fri, 2 Jul 2021 12:12:55 +0000 Subject: [PATCH 7/8] Drone: update FindBugs results to reflect reduced error/warning count [skip ci] Signed-off-by: drone --- scripts/analysis/findbugs-results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/analysis/findbugs-results.txt b/scripts/analysis/findbugs-results.txt index 3fa694f24..662d98cc9 100644 --- a/scripts/analysis/findbugs-results.txt +++ b/scripts/analysis/findbugs-results.txt @@ -1 +1 @@ -437 \ No newline at end of file +436 \ No newline at end of file From d1d81b947f7e2a3199d17b04ac7ee89602669d42 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 2 Jul 2021 14:36:05 +0200 Subject: [PATCH 8/8] reformat code and use app-defined color-white Signed-off-by: Andy Scherzinger --- app/src/main/res/layout/call_item.xml | 18 ++++----- app/src/main/res/layout/controller_call.xml | 45 ++++++++++----------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/app/src/main/res/layout/call_item.xml b/app/src/main/res/layout/call_item.xml index 7ee20f0d5..1a44555dd 100644 --- a/app/src/main/res/layout/call_item.xml +++ b/app/src/main/res/layout/call_item.xml @@ -28,8 +28,8 @@ android:id="@+id/relative_layout" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" - android:gravity="center"> + android:gravity="center" + android:orientation="vertical"> + android:textColor="@color/white" + tools:text="Bill Murray 12345678901234567890" /> + tools:visibility="visible" /> diff --git a/app/src/main/res/layout/controller_call.xml b/app/src/main/res/layout/controller_call.xml index 17f397460..a02000cfc 100644 --- a/app/src/main/res/layout/controller_call.xml +++ b/app/src/main/res/layout/controller_call.xml @@ -21,14 +21,14 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/controllerCallLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fitsSystemWindows="true" + android:orientation="vertical" + tools:context=".activities.MagicCallActivity"> + android:stretchMode="columnWidth" /> + tools:text="Voice Call" /> - + android:layout_centerVertical="true" /> + android:layout_marginTop="-50dp" /> @@ -135,11 +135,11 @@ android:id="@+id/callControlsLinearLayout" android:layout_width="match_parent" android:layout_height="@dimen/call_controls_height" + android:layout_alignBottom="@id/linearWrapperLayout" android:animateLayoutChanges="true" - android:orientation="horizontal" android:background="@android:color/transparent" android:gravity="center" - android:layout_alignBottom="@id/linearWrapperLayout"> + android:orientation="horizontal"> + app:roundAsCircle="true" /> - \ No newline at end of file +