Keep title in same position regardless of if there's a logo or not
Fixes: 142014887
Test: Manually
Change-Id: I473b858728fa9da704063003ab9d3fc9559e0f07
diff --git a/car-ui-lib/res/layout-port/car_ui_toolbar.xml b/car-ui-lib/res/layout-port/car_ui_toolbar.xml
index 1eb6758..dc2d225 100644
--- a/car-ui-lib/res/layout-port/car_ui_toolbar.xml
+++ b/car-ui-lib/res/layout-port/car_ui_toolbar.xml
@@ -20,6 +20,41 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
+ <androidx.constraintlayout.widget.Guideline
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/toolbar_start_guideline"
+ app:layout_constraintGuide_begin="@dimen/car_ui_toolbar_start_inset"
+ android:orientation="vertical"/>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/toolbar_top_guideline"
+ app:layout_constraintGuide_begin="@dimen/car_ui_toolbar_top_inset"
+ android:orientation="horizontal"/>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/toolbar_end_guideline"
+ app:layout_constraintGuide_end="@dimen/car_ui_toolbar_end_inset"
+ android:orientation="vertical"/>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/toolbar_bottom_guideline"
+ app:layout_constraintGuide_end="@dimen/car_ui_toolbar_bottom_inset"
+ android:orientation="horizontal"/>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/toolbar_start_margin_guideline"
+ app:layout_constraintGuide_begin="@dimen/car_ui_toolbar_margin"
+ android:orientation="vertical"/>
+
<!-- When the user finishes searching, we call clearFocus() on the editText in the search bar.
clearFocus() will actually send the focus to the first focusable thing in the layout.
If that focusable thing is still the search bar it will just reselect it, and the user won't
@@ -48,12 +83,13 @@
<FrameLayout
android:id="@+id/nav_icon_container"
- android:layout_width="@dimen/car_ui_toolbar_nav_button_width"
+ android:layout_width="0dp"
android:layout_height="0dp"
android:background="?android:attr/selectableItemBackground"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
app:layout_constraintBottom_toTopOf="@id/row_separator"
- app:layout_constraintStart_toStartOf="parent">
+ app:layout_constraintStart_toStartOf="@id/toolbar_start_guideline"
+ app:layout_constraintEnd_toStartOf="@id/toolbar_start_margin_guideline">
<ImageView
android:id="@+id/nav_icon"
android:layout_width="@dimen/car_ui_toolbar_icon_size"
@@ -75,9 +111,9 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/car_ui_toolbar_title_margin_start"
style="@style/TextAppearance.CarUi.Widget.Toolbar.Title"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
app:layout_constraintBottom_toTopOf="@id/row_separator"
- app:layout_constraintStart_toEndOf="@id/nav_icon_container"
+ app:layout_constraintStart_toEndOf="@id/toolbar_start_margin_guideline"
app:layout_constraintEnd_toStartOf="@id/menu_items_container"/>
<com.android.car.ui.toolbar.SearchView
@@ -85,7 +121,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:visibility="gone"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
app:layout_constraintBottom_toTopOf="@id/row_separator"
app:layout_constraintStart_toEndOf="@id/nav_icon_container"
app:layout_constraintEnd_toStartOf="@id/menu_items_container"/>
@@ -95,7 +131,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
app:layout_constraintBottom_toTopOf="@id/row_separator"
app:layout_constraintStart_toEndOf="@id/nav_icon_container"
app:layout_constraintEnd_toStartOf="@id/menu_items_container"/>
@@ -107,7 +143,7 @@
android:orientation="horizontal"
android:divider="@drawable/car_ui_toolbar_menu_item_divider"
android:showDividers="beginning|middle|end"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
app:layout_constraintBottom_toTopOf="@id/row_separator"
app:layout_constraintEnd_toStartOf="@id/car_ui_toolbar_overflow_button"/>
@@ -118,9 +154,9 @@
android:layout_marginLeft="@dimen/car_ui_toolbar_menu_item_margin"
android:layout_marginRight="@dimen/car_ui_toolbar_menu_item_margin"
android:visibility="gone"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
app:layout_constraintBottom_toTopOf="@id/row_separator"
- app:layout_constraintEnd_toEndOf="parent">
+ app:layout_constraintEnd_toEndOf="@id/toolbar_end_guideline">
<ImageView
android:src="@drawable/car_ui_icon_overflow_menu"
android:layout_width="@dimen/car_ui_primary_icon_size"
@@ -136,7 +172,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/car_ui_toolbar_second_row_height"
app:layout_constraintTop_toBottomOf="@id/row_separator"
- app:layout_constraintBottom_toTopOf="@id/bottom_styleable"/>
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"/>
<!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
<View
diff --git a/car-ui-lib/res/layout/car_ui_toolbar.xml b/car-ui-lib/res/layout/car_ui_toolbar.xml
index 7ee939f..14d3e64 100644
--- a/car-ui-lib/res/layout/car_ui_toolbar.xml
+++ b/car-ui-lib/res/layout/car_ui_toolbar.xml
@@ -57,14 +57,26 @@
android:id="@+id/toolbar_bottom_guideline"
app:layout_constraintGuide_end="@dimen/car_ui_toolbar_bottom_inset"
android:orientation="horizontal"/>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/toolbar_start_margin_guideline"
+ app:layout_constraintGuide_begin="@dimen/car_ui_toolbar_margin"
+ android:orientation="vertical"/>
+
+ <!-- The horizontal bias here is so that when you set this view as GONE, it will be
+ treated as if it's all the way to the left instead of centered in the margin -->
<FrameLayout
android:id="@+id/nav_icon_container"
- android:layout_width="@dimen/car_ui_toolbar_nav_button_width"
+ android:layout_width="0dp"
android:layout_height="0dp"
android:background="?android:attr/selectableItemBackground"
app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
- app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
- app:layout_constraintStart_toStartOf="@id/toolbar_start_guideline">
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"
+ app:layout_constraintStart_toEndOf="@id/toolbar_start_guideline"
+ app:layout_constraintEnd_toStartOf="@id/toolbar_start_margin_guideline"
+ app:layout_constraintHorizontal_bias="0.0">
<ImageView
android:id="@+id/nav_icon"
android:layout_width="@dimen/car_ui_toolbar_icon_size"
@@ -87,17 +99,16 @@
android:layout_marginStart="@dimen/car_ui_toolbar_title_margin_start"
style="@style/TextAppearance.CarUi.Widget.Toolbar.Title"
app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
- app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
- app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"
+ app:layout_constraintStart_toEndOf="@+id/toolbar_start_margin_guideline"
app:layout_constraintEnd_toStartOf="@+id/menu_items_container"/>
<com.android.car.ui.toolbar.TabLayout
android:id="@+id/tabs"
android:layout_width="wrap_content"
android:layout_height="0dp"
- android:layout_marginEnd="@dimen/car_ui_toolbar_menu_item_margin"
app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
- app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"
app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
app:layout_constraintEnd_toStartOf="@+id/menu_items_container"
app:layout_constraintHorizontal_bias="0.0"/>
@@ -108,7 +119,7 @@
android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
- app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"
app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
app:layout_constraintEnd_toStartOf="@+id/menu_items_container"/>
@@ -120,7 +131,7 @@
android:divider="@drawable/car_ui_toolbar_menu_item_divider"
android:showDividers="beginning|middle|end"
app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
- app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"
app:layout_constraintEnd_toStartOf="@+id/car_ui_toolbar_overflow_button"/>
<FrameLayout
@@ -149,7 +160,7 @@
android:layout_height="match_parent"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@id/toolbar_top_guideline"
- app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
+ app:layout_constraintBottom_toTopOf="@id/toolbar_bottom_guideline"
app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
app:layout_constraintEnd_toStartOf="@+id/menu_items_container"/>
@@ -158,7 +169,7 @@
android:id="@+id/bottom_styleable"
android:layout_width="match_parent"
android:layout_height="0.01dp"
- app:layout_constraintBottom_toBottomOf="@id/toolbar_bottom_guideline"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/car-ui-lib/res/values/dimens.xml b/car-ui-lib/res/values/dimens.xml
index d92801d..cc6de28 100644
--- a/car-ui-lib/res/values/dimens.xml
+++ b/car-ui-lib/res/values/dimens.xml
@@ -49,11 +49,11 @@
<dimen name="car_ui_toolbar_row_height">96dp</dimen>
<dimen name="car_ui_toolbar_first_row_height">@dimen/car_ui_toolbar_row_height</dimen>
<dimen name="car_ui_toolbar_second_row_height">@dimen/car_ui_toolbar_row_height</dimen>
- <dimen name="car_ui_toolbar_nav_button_width">@dimen/car_ui_margin</dimen>
<dimen name="car_ui_toolbar_start_inset">0dp</dimen>
<dimen name="car_ui_toolbar_end_inset">0dp</dimen>
<dimen name="car_ui_toolbar_top_inset">0dp</dimen>
<dimen name="car_ui_toolbar_bottom_inset">0dp</dimen>
+ <dimen name="car_ui_toolbar_margin">@dimen/car_ui_margin</dimen>
<dimen name="car_ui_toolbar_icon_size">@dimen/car_ui_primary_icon_size</dimen>
<dimen name="car_ui_toolbar_title_margin_start">@dimen/car_ui_padding_2</dimen>
<dimen name="car_ui_toolbar_menu_item_margin">@dimen/car_ui_padding_2</dimen>
diff --git a/car-ui-lib/tests/paintbooth/src/com/android/car/ui/paintbooth/toolbar/ToolbarActivity.java b/car-ui-lib/tests/paintbooth/src/com/android/car/ui/paintbooth/toolbar/ToolbarActivity.java
index e2d3346..2e51400 100644
--- a/car-ui-lib/tests/paintbooth/src/com/android/car/ui/paintbooth/toolbar/ToolbarActivity.java
+++ b/car-ui-lib/tests/paintbooth/src/com/android/car/ui/paintbooth/toolbar/ToolbarActivity.java
@@ -114,6 +114,12 @@
}
}));
+ Mutable<Boolean> hasLogo = new Mutable<>(true);
+ mButtons.add(Pair.create("Toggle logo", v -> {
+ toolbar.setLogo(hasLogo.value ? 0 : R.drawable.ic_launcher);
+ hasLogo.value = !hasLogo.value;
+ }));
+
mButtons.add(Pair.create("Toggle state", v -> {
if (toolbar.getState() == Toolbar.State.SUBPAGE) {
toolbar.setState(Toolbar.State.HOME);