Fix playback control bar for RTL layouts.
- Fixes control bar button positions to always be ltr as specified by
its documentations and as required by convention. (consistent with phone)
- Updates to locale based text direction rather than content based.
Bug: 151276367
Bug: 150957534
Test: Manual
Change-Id: I92d1cc88ebeea719615e5c2b9d78c84d4923083f
diff --git a/car-apps-common/res/layout/control_bar.xml b/car-apps-common/res/layout/control_bar.xml
index d800565..a24038a 100644
--- a/car-apps-common/res/layout/control_bar.xml
+++ b/car-apps-common/res/layout/control_bar.xml
@@ -23,6 +23,7 @@
<LinearLayout
android:id="@+id/rows_container"
android:orientation="vertical"
+ android:layoutDirection="ltr"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content">
diff --git a/car-apps-common/res/layout/minimized_control_bar.xml b/car-apps-common/res/layout/minimized_control_bar.xml
index f91941c..814fe15 100644
--- a/car-apps-common/res/layout/minimized_control_bar.xml
+++ b/car-apps-common/res/layout/minimized_control_bar.xml
@@ -68,6 +68,9 @@
app:layout_constraintStart_toStartOf="@+id/minimized_control_bar_title"
app:layout_constraintEnd_toEndOf="@+id/minimized_control_bar_title"/>
+ <!-- Using a LinearLayout as a wrapper to be able to define layout constraints between the
+ parent (ConstraintLayout with locale based layout) and the child (LinearLayout with LTR
+ layout). -->
<LinearLayout
android:id="@+id/minimized_control_buttons_wrapper"
android:layout_width="wrap_content"
@@ -79,31 +82,38 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/minimized_control_bar_title"
app:layout_constraintEnd_toEndOf="parent">
- <include
- android:id="@+id/minimized_control_bar_left_slot"
- android:layout_width="@dimen/minimized_control_bar_button_size"
- android:layout_height="@dimen/minimized_control_bar_button_size"
- android:layout_marginEnd="@dimen/minimized_control_bar_button_padding"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"
- layout="@layout/control_bar_slot"/>
- <include
- android:id="@+id/minimized_control_bar_main_slot"
- android:layout_width="@dimen/minimized_control_bar_button_size"
- android:layout_height="@dimen/minimized_control_bar_button_size"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"
- layout="@layout/control_bar_slot"/>
- <include
- android:id="@+id/minimized_control_bar_right_slot"
- android:layout_width="@dimen/minimized_control_bar_button_size"
- android:layout_height="@dimen/minimized_control_bar_button_size"
- android:layout_marginStart="@dimen/minimized_control_bar_button_padding"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"
- layout="@layout/control_bar_slot"/>
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:clipChildren="false"
+ android:layoutDirection="ltr"
+ android:layout_gravity="center_vertical">
+ <include
+ android:id="@+id/minimized_control_bar_left_slot"
+ android:layout_width="@dimen/minimized_control_bar_button_size"
+ android:layout_height="@dimen/minimized_control_bar_button_size"
+ android:layout_marginEnd="@dimen/minimized_control_bar_button_padding"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ layout="@layout/control_bar_slot"/>
+ <include
+ android:id="@+id/minimized_control_bar_main_slot"
+ android:layout_width="@dimen/minimized_control_bar_button_size"
+ android:layout_height="@dimen/minimized_control_bar_button_size"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ layout="@layout/control_bar_slot"/>
+ <include
+ android:id="@+id/minimized_control_bar_right_slot"
+ android:layout_width="@dimen/minimized_control_bar_button_size"
+ android:layout_height="@dimen/minimized_control_bar_button_size"
+ android:layout_marginStart="@dimen/minimized_control_bar_button_padding"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ layout="@layout/control_bar_slot"/>
+ </LinearLayout>
</LinearLayout>
-
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/car-apps-common/res/values/styles.xml b/car-apps-common/res/values/styles.xml
index 28c3584..6983bdc 100644
--- a/car-apps-common/res/values/styles.xml
+++ b/car-apps-common/res/values/styles.xml
@@ -101,8 +101,12 @@
<item name="android:letterSpacing">@dimen/letter_spacing_body3</item>
</style>
- <style name="MinimizedControlBarTitle" parent="TextAppearance.Body1"/>
- <style name="MinimizedControlBarSubtitle" parent="TextAppearance.Body3"/>
+ <style name="MinimizedControlBarTitle" parent="TextAppearance.Body1">
+ <item name="android:textDirection">locale</item>
+ </style>
+ <style name="MinimizedControlBarSubtitle" parent="TextAppearance.Body3">
+ <item name="android:textDirection">locale</item>
+ </style>
<!-- Styles for ControlBar -->
<style name="ControlBar">
diff --git a/car-media-common/res/values/styles.xml b/car-media-common/res/values/styles.xml
index 972837d..5d00241 100644
--- a/car-media-common/res/values/styles.xml
+++ b/car-media-common/res/values/styles.xml
@@ -18,11 +18,13 @@
<style name="PlaybackTitleStyle" parent="TextAppearance.Body1">
<item name="android:singleLine">true</item>
<item name="android:includeFontPadding">false</item>
+ <item name="android:textDirection">locale</item>
</style>
<style name="PlaybackSubtitleStyle" parent="TextAppearance.Body3">
<item name="android:textColor">@color/secondary_text_color</item>
<item name="android:singleLine">true</item>
<item name="android:includeFontPadding">false</item>
+ <item name="android:textDirection">locale</item>
</style>
</resources>