Skip to content

Commit 169ad0a

Browse files
committed
Adjust the omnibar vertical padding paddings
1 parent e1c55d0 commit 169ad0a

14 files changed

+340
-26
lines changed

app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import com.duckduckgo.app.browser.databinding.IncludeExperimentalOmnibarToolbarM
5656
import com.duckduckgo.app.browser.databinding.IncludeExperimentalOmnibarToolbarMockupBottomBinding
5757
import com.duckduckgo.app.browser.databinding.IncludeOmnibarToolbarMockupBinding
5858
import com.duckduckgo.app.browser.databinding.IncludeSingleOmnibarToolbarMockupBinding
59+
import com.duckduckgo.app.browser.databinding.IncludeSingleOmnibarToolbarMockupBottomBinding
5960
import com.duckduckgo.app.browser.defaultbrowsing.prompts.ui.DefaultBrowserBottomSheetDialog
6061
import com.duckduckgo.app.browser.defaultbrowsing.prompts.ui.DefaultBrowserBottomSheetDialog.EventListener
6162
import com.duckduckgo.app.browser.omnibar.model.OmnibarPosition.BOTTOM
@@ -251,6 +252,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
251252
private lateinit var experimentalToolbarMockupBinding: IncludeExperimentalOmnibarToolbarMockupBinding
252253
private lateinit var experimentalToolbarMockupBottomBinding: IncludeExperimentalOmnibarToolbarMockupBottomBinding
253254
private lateinit var singleToolBarMockupBinding: IncludeSingleOmnibarToolbarMockupBinding
255+
private lateinit var singleToolBarMockupBottomBinding: IncludeSingleOmnibarToolbarMockupBottomBinding
254256

255257
private var openMessageInNewTabJob: Job? = null
256258

@@ -905,6 +907,9 @@ open class BrowserActivity : DuckDuckGoActivity() {
905907
if (this::singleToolBarMockupBinding.isInitialized) {
906908
singleToolBarMockupBinding.appBarLayoutMockup.visibility = View.GONE
907909
}
910+
if (this::singleToolBarMockupBottomBinding.isInitialized) {
911+
singleToolBarMockupBottomBinding.appBarLayoutMockup.visibility = View.GONE
912+
}
908913
},
909914
300,
910915
)
@@ -1279,36 +1284,49 @@ open class BrowserActivity : DuckDuckGoActivity() {
12791284
toolbarMockupBinding.aiChatIconMenuMockup.isVisible = duckAiFeatureState.showOmnibarShortcutInAllStates.value
12801285
}
12811286
else -> {
1282-
singleToolBarMockupBinding = when (settingsDataStore.omnibarPosition) {
1287+
when (settingsDataStore.omnibarPosition) {
12831288
TOP -> {
12841289
if (Build.VERSION.SDK_INT < 28) {
12851290
binding.topMockupSingleToolbar.mockOmniBarContainerShadow.cardElevation = 2f.toPx(this)
12861291
}
12871292

12881293
binding.bottomMockupSingleToolbar.appBarLayoutMockup.gone()
1289-
binding.topMockupSingleToolbar
1294+
singleToolBarMockupBinding = binding.topMockupSingleToolbar
1295+
1296+
if (!duckAiFeatureState.showOmnibarShortcutOnNtpAndOnFocus.value) {
1297+
singleToolBarMockupBinding.aiChatIconMockup.isVisible = false
1298+
}
1299+
1300+
if (Build.VERSION.SDK_INT >= 28) {
1301+
singleToolBarMockupBinding.mockOmniBarContainerShadow.addBottomShadow(
1302+
shadowSizeDp = 12f,
1303+
offsetYDp = 3f,
1304+
insetDp = 3f,
1305+
shadowColor = ContextCompat.getColor(this, com.duckduckgo.mobile.android.R.color.background_omnibar_shadow),
1306+
)
1307+
}
12901308
}
12911309
BOTTOM -> {
12921310
if (Build.VERSION.SDK_INT < 28) {
12931311
binding.bottomMockupSingleToolbar.mockOmniBarContainerShadow.cardElevation = 0.5f.toPx(this)
12941312
}
12951313

12961314
binding.topMockupSingleToolbar.appBarLayoutMockup.gone()
1297-
binding.bottomMockupSingleToolbar
1298-
}
1299-
}
1315+
singleToolBarMockupBottomBinding = binding.bottomMockupSingleToolbar
13001316

1301-
if (!duckAiFeatureState.showOmnibarShortcutOnNtpAndOnFocus.value) {
1302-
singleToolBarMockupBinding.aiChatIconMockup.isVisible = false
1303-
}
1317+
if (!duckAiFeatureState.showOmnibarShortcutOnNtpAndOnFocus.value) {
1318+
singleToolBarMockupBottomBinding.aiChatIconMockup.isVisible = false
1319+
}
13041320

1305-
if (Build.VERSION.SDK_INT >= 28) {
1306-
singleToolBarMockupBinding.mockOmniBarContainerShadow.addBottomShadow(
1307-
shadowSizeDp = 12f,
1308-
offsetYDp = 3f,
1309-
insetDp = 3f,
1310-
shadowColor = ContextCompat.getColor(this, com.duckduckgo.mobile.android.R.color.background_omnibar_shadow),
1311-
)
1321+
if (Build.VERSION.SDK_INT >= 28) {
1322+
singleToolBarMockupBottomBinding.mockOmniBarContainerShadow.addBottomShadow(
1323+
shadowSizeDp = 12f,
1324+
offsetYDp = 3f,
1325+
insetDp = 3f,
1326+
shadowColor = ContextCompat.getColor(this, com.duckduckgo.mobile.android.R.color.background_omnibar_shadow),
1327+
)
1328+
}
1329+
}
13121330
}
13131331

13141332
binding.bottomMockupToolbar.appBarLayoutMockup.gone()

app/src/main/java/com/duckduckgo/app/browser/omnibar/experiments/SingleOmnibarLayout.kt

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import android.view.animation.DecelerateInterpolator
2727
import android.widget.ImageView
2828
import androidx.core.content.ContextCompat
2929
import androidx.core.view.isVisible
30-
import androidx.core.view.updatePadding
30+
import androidx.core.view.updateLayoutParams
3131
import com.duckduckgo.anvil.annotations.InjectWith
3232
import com.duckduckgo.app.browser.R
3333
import com.duckduckgo.app.browser.databinding.IncludeFadeOmnibarFindInPageBinding
@@ -62,6 +62,8 @@ class SingleOmnibarLayout @JvmOverloads constructor(
6262
private val aiChatDivider: View by lazy { findViewById(R.id.verticalDivider) }
6363
private val omnibarCard: MaterialCardView by lazy { findViewById(R.id.omniBarContainer) }
6464
private val omnibarCardShadow: MaterialCardView by lazy { findViewById(R.id.omniBarContainerShadow) }
65+
private val iconsContainer: View by lazy { findViewById(R.id.iconsContainer) }
66+
private val shieldIconPulseAnimationContainer: View by lazy { findViewById(R.id.shieldIconPulseAnimationContainer) }
6567
private val omniBarContentContainer: View by lazy { findViewById(R.id.omniBarContentContainer) }
6668
private val backIcon: ImageView by lazy { findViewById(R.id.backIcon) }
6769
private val customTabToolbarContainerWrapper: ViewGroup by lazy { findViewById(R.id.customTabToolbarContainerWrapper) }
@@ -82,9 +84,14 @@ class SingleOmnibarLayout @JvmOverloads constructor(
8284
}
8385
}
8486

85-
private val toolbarContainerPaddingTopWhenAtBottom by lazy {
86-
resources.getDimensionPixelSize(CommonR.dimen.experimentalToolbarContainerPaddingTopWhenAtBottom)
87+
private val experimentalOmnibarCardMarginTop by lazy {
88+
resources.getDimensionPixelSize(CommonR.dimen.experimentalOmnibarCardMarginTop)
8789
}
90+
91+
private val experimentalOmnibarCardMarginBottom by lazy {
92+
resources.getDimensionPixelSize(CommonR.dimen.experimentalOmnibarCardMarginBottom)
93+
}
94+
8895
private val omnibarOutlineWidth by lazy { resources.getDimensionPixelSize(CommonR.dimen.experimentalOmnibarOutlineWidth) }
8996
private val omnibarOutlineFocusedWidth by lazy { resources.getDimensionPixelSize(CommonR.dimen.experimentalOmnibarOutlineFocusedWidth) }
9097

@@ -117,9 +124,26 @@ class SingleOmnibarLayout @JvmOverloads constructor(
117124
}
118125
OmnibarPosition.BOTTOM -> {
119126
// When omnibar is at the bottom, we're adding an additional space at the top
120-
toolbarContainer.updatePadding(
121-
top = toolbarContainerPaddingTopWhenAtBottom,
122-
)
127+
omnibarCardShadow.updateLayoutParams {
128+
(this as MarginLayoutParams).apply {
129+
topMargin = experimentalOmnibarCardMarginBottom
130+
bottomMargin = experimentalOmnibarCardMarginTop
131+
}
132+
}
133+
134+
iconsContainer.updateLayoutParams {
135+
(this as MarginLayoutParams).apply {
136+
topMargin = experimentalOmnibarCardMarginBottom
137+
bottomMargin = experimentalOmnibarCardMarginTop
138+
}
139+
}
140+
141+
shieldIconPulseAnimationContainer.updateLayoutParams {
142+
(this as MarginLayoutParams).apply {
143+
topMargin = experimentalOmnibarCardMarginBottom
144+
bottomMargin = experimentalOmnibarCardMarginTop
145+
}
146+
}
123147

124148
// Try to reduce the bottom omnibar material shadow when not using the custom shadow
125149
if (Build.VERSION.SDK_INT < 28) {

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,15 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
277277
private fun configureViewReferences() {
278278
tabsRecycler = findViewById(R.id.tabsRecycler)
279279

280-
if (settingsDataStore.omnibarPosition == OmnibarPosition.BOTTOM && viewModel.isNewDesignEnabled) {
280+
if (viewModel.isNewDesignEnabled) {
281+
if (settingsDataStore.omnibarPosition == OmnibarPosition.BOTTOM) {
282+
binding.root.removeView(binding.tabSwitcherExperimentToolbarTop.root)
283+
} else {
284+
binding.root.removeView(binding.tabSwitcherToolbarBottom.root)
285+
}
281286
binding.root.removeView(binding.tabSwitcherToolbarTop.root)
282287
} else {
288+
binding.root.removeView(binding.tabSwitcherExperimentToolbarTop.root)
283289
binding.root.removeView(binding.tabSwitcherToolbarBottom.root)
284290
}
285291

app/src/main/res/layout/activity_browser.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@
7272
android:layout_width="match_parent"
7373
android:layout_height="@dimen/experimentalToolbarSize"
7474
android:layout_alignParentBottom="true"
75-
layout="@layout/include_single_omnibar_toolbar_mockup" />
75+
layout="@layout/include_single_omnibar_toolbar_mockup_bottom" />
7676

7777
</RelativeLayout>

app/src/main/res/layout/activity_tab_switcher.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
android:layout_width="match_parent"
2222
android:layout_height="match_parent">
2323

24+
<include
25+
android:id="@+id/tabSwitcherExperimentToolbarTop"
26+
layout="@layout/include_tab_switcher_toolbar_top"
27+
android:layout_width="match_parent"
28+
android:layout_height="wrap_content" />
29+
2430
<include
2531
android:id="@+id/tabSwitcherToolbarTop"
2632
layout="@layout/include_default_toolbar"
@@ -72,7 +78,7 @@
7278

7379
<include
7480
android:id="@+id/tabSwitcherToolbarBottom"
75-
layout="@layout/include_default_toolbar"
81+
layout="@layout/include_tab_switcher_toolbar_bottom"
7682
android:layout_gravity="bottom"
7783
android:layout_width="match_parent"
7884
android:layout_height="wrap_content" />

app/src/main/res/layout/include_single_omnibar_toolbar_mockup.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
android:layout_width="match_parent"
2424
android:layout_height="@dimen/experimentalToolbarSize"
2525
android:background="?daxColorToolbar"
26-
android:clipChildren="false"
27-
android:theme="@style/Widget.DuckDuckGo.ToolbarTheme">
26+
android:clipChildren="false">
2827

2928
<com.google.android.material.card.MaterialCardView
3029
android:id="@+id/mockOmniBarContainerShadow"
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<!--
4+
~ Copyright (c) 2025 DuckDuckGo
5+
~
6+
~ Licensed under the Apache License, Version 2.0 (the "License");
7+
~ you may not use this file except in compliance with the License.
8+
~ You may obtain a copy of the License at
9+
~
10+
~ http://www.apache.org/licenses/LICENSE-2.0
11+
~
12+
~ Unless required by applicable law or agreed to in writing, software
13+
~ distributed under the License is distributed on an "AS IS" BASIS,
14+
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
~ See the License for the specific language governing permissions and
16+
~ limitations under the License.
17+
-->
18+
19+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
20+
xmlns:app="http://schemas.android.com/apk/res-auto"
21+
xmlns:tools="http://schemas.android.com/tools"
22+
android:id="@+id/appBarLayoutMockup"
23+
android:layout_width="match_parent"
24+
android:layout_height="@dimen/experimentalToolbarSize"
25+
android:background="?daxColorToolbar"
26+
android:clipChildren="false">
27+
28+
<com.google.android.material.card.MaterialCardView
29+
android:id="@+id/mockOmniBarContainerShadow"
30+
app:cardCornerRadius="@dimen/largeShapeCornerRadius"
31+
android:layout_width="0dp"
32+
android:layout_height="match_parent"
33+
android:layout_marginStart="@dimen/experimentalOmnibarCardMarginHorizontal"
34+
android:layout_marginEnd="@dimen/experimentalOmnibarCardMarginEnd"
35+
android:layout_marginTop="@dimen/experimentalOmnibarCardMarginBottom"
36+
android:layout_marginBottom="@dimen/experimentalOmnibarCardMarginTop"
37+
app:layout_constraintBottom_toBottomOf="parent"
38+
app:layout_constraintEnd_toStartOf="@id/iconsContainer"
39+
app:layout_constraintStart_toStartOf="parent"
40+
app:layout_constraintTop_toTopOf="parent">
41+
42+
<com.google.android.material.card.MaterialCardView
43+
android:id="@+id/omniBarContainerMockup"
44+
style="@style/Widget.DuckDuckGo.OmnibarCardView"
45+
android:layout_width="match_parent"
46+
android:layout_height="match_parent"
47+
app:cardElevation="0dp">
48+
49+
<LinearLayout
50+
android:layout_width="match_parent"
51+
android:layout_height="match_parent"
52+
android:orientation="horizontal">
53+
54+
<ImageView
55+
android:id="@+id/searchIconMockup"
56+
android:layout_width="wrap_content"
57+
android:layout_height="match_parent"
58+
android:gravity="center"
59+
android:importantForAccessibility="no"
60+
android:paddingVertical="6dp"
61+
android:paddingStart="10dp"
62+
android:paddingEnd="8dp"
63+
android:src="@drawable/ic_find_search_small_24" />
64+
65+
<com.duckduckgo.common.ui.view.text.DaxTextView
66+
android:id="@+id/omnibarTextInputMockup"
67+
android:layout_width="0dp"
68+
android:layout_height="match_parent"
69+
android:layout_weight="1"
70+
android:gravity="start|center"
71+
android:maxLines="1"
72+
android:paddingEnd="8dp"
73+
android:text="@string/search"
74+
android:textColor="?attr/daxColorSecondaryText" />
75+
76+
<ImageView
77+
android:id="@+id/aiChatIconMockup"
78+
android:layout_width="wrap_content"
79+
android:layout_height="match_parent"
80+
android:gravity="center"
81+
android:importantForAccessibility="no"
82+
android:paddingVertical="6dp"
83+
android:paddingHorizontal="10dp"
84+
android:src="@drawable/ic_ai_chat_24" />
85+
86+
</LinearLayout>
87+
88+
</com.google.android.material.card.MaterialCardView>
89+
90+
</com.google.android.material.card.MaterialCardView>
91+
92+
<androidx.constraintlayout.widget.ConstraintLayout
93+
android:id="@+id/iconsContainer"
94+
android:layout_width="wrap_content"
95+
android:layout_height="@dimen/toolbarIcon"
96+
android:layout_marginTop="@dimen/experimentalOmnibarCardMarginBottom"
97+
android:layout_marginBottom="@dimen/experimentalOmnibarCardMarginTop"
98+
android:layout_marginEnd="@dimen/keyline_1"
99+
app:layout_constraintBottom_toBottomOf="parent"
100+
app:layout_constraintEnd_toEndOf="parent"
101+
app:layout_constraintStart_toEndOf="@id/mockOmniBarContainerShadow"
102+
app:layout_constraintTop_toTopOf="parent">
103+
104+
<com.duckduckgo.app.browser.tabswitcher.NewTabSwitcherButton
105+
android:id="@+id/tabsMenu"
106+
android:layout_width="@dimen/toolbarIcon"
107+
android:layout_height="@dimen/toolbarIcon"
108+
app:layout_constraintBottom_toBottomOf="parent"
109+
app:layout_constraintEnd_toStartOf="@id/browserMenu"
110+
app:layout_constraintStart_toEndOf="@id/fireIconMenu"
111+
app:layout_constraintTop_toTopOf="parent" />
112+
113+
<FrameLayout
114+
android:id="@+id/browserMenu"
115+
android:layout_width="@dimen/toolbarIcon"
116+
android:layout_height="@dimen/toolbarIcon"
117+
android:background="@drawable/selectable_item_experimental_background"
118+
app:layout_constraintBottom_toBottomOf="parent"
119+
app:layout_constraintEnd_toEndOf="parent"
120+
app:layout_constraintStart_toEndOf="@id/tabsMenu"
121+
app:layout_constraintTop_toTopOf="parent">
122+
123+
<ImageView
124+
android:id="@+id/browserMenuImageView"
125+
android:layout_width="@dimen/bottomNavIcon"
126+
android:layout_height="@dimen/bottomNavIcon"
127+
android:layout_gravity="center"
128+
android:contentDescription="@string/browserPopupMenu"
129+
android:scaleType="center"
130+
android:src="@drawable/ic_menu_vertical_24" />
131+
132+
133+
<View
134+
android:id="@+id/browserMenuHighlight"
135+
android:layout_width="7dp"
136+
android:layout_height="7dp"
137+
android:layout_gravity="end"
138+
android:layout_margin="@dimen/keyline_2"
139+
android:background="@drawable/ic_circle_7_accent_blue"
140+
android:visibility="gone" />
141+
142+
</FrameLayout>
143+
144+
<FrameLayout
145+
android:id="@+id/fireIconMenu"
146+
android:layout_width="@dimen/toolbarIcon"
147+
android:layout_height="@dimen/toolbarIcon"
148+
android:background="@drawable/selectable_item_experimental_background"
149+
app:layout_constraintBottom_toBottomOf="parent"
150+
app:layout_constraintEnd_toStartOf="@id/tabsMenu"
151+
app:layout_constraintStart_toStartOf="parent"
152+
app:layout_constraintTop_toTopOf="parent">
153+
154+
<ImageView
155+
android:id="@+id/fireIconImageView"
156+
android:layout_width="@dimen/bottomNavIcon"
157+
android:layout_height="@dimen/bottomNavIcon"
158+
android:layout_gravity="center"
159+
android:contentDescription="@string/fireMenu"
160+
android:scaleType="center"
161+
android:src="@drawable/ic_fire_24" />
162+
</FrameLayout>
163+
164+
</androidx.constraintlayout.widget.ConstraintLayout>
165+
166+
</androidx.constraintlayout.widget.ConstraintLayout>

common/common-ui/src/main/res/layout/include_default_toolbar.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
android:id="@+id/appBarLayout"
2323
android:layout_width="match_parent"
2424
android:layout_height="wrap_content"
25+
android:background="?attr/daxColorToolbar"
2526
android:theme="@style/Widget.DuckDuckGo.ToolbarTheme">
2627

2728
<androidx.appcompat.widget.Toolbar

0 commit comments

Comments
 (0)