diff options
author | Jian Jin <jinjian@google.com> | 2021-07-22 17:37:03 -0700 |
---|---|---|
committer | Jian Jin <jinjian@google.com> | 2021-07-26 12:39:52 -0700 |
commit | 0c12de2405c17f456507d06609941ef6ca6ee0f1 (patch) | |
tree | 5d83c3e1974d0dd1c31ac56e502a9b1c9e63f16f | |
parent | 61436bbeb221876ac7ed81160de82f51c39a02bc (diff) | |
download | setupwizard-0c12de2405c17f456507d06609941ef6ca6ee0f1.tar.gz |
Fix mirrored vertical bar in split-nav in RTL
Fixes: 193742213
Test: CarSetupWizardRoboTests
Change-Id: I548b1c7380bc2837d5b0952facfcf7fe6e66f94d
4 files changed, 53 insertions, 1 deletions
diff --git a/library/main/res/layout-land/rotary_split_nav_layout.xml b/library/main/res/layout-land/rotary_split_nav_layout.xml index f1cb29b..b69c5b2 100644 --- a/library/main/res/layout-land/rotary_split_nav_layout.xml +++ b/library/main/res/layout-land/rotary_split_nav_layout.xml @@ -49,6 +49,7 @@ </com.android.car.ui.FocusArea> <LinearLayout + android:id="@+id/content_container" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" diff --git a/library/main/res/layout-land/split_nav_layout.xml b/library/main/res/layout-land/split_nav_layout.xml index fadc6f3..16a017f 100644 --- a/library/main/res/layout-land/split_nav_layout.xml +++ b/library/main/res/layout-land/split_nav_layout.xml @@ -42,6 +42,7 @@ </FrameLayout> <LinearLayout + android:id="@+id/content_container" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" diff --git a/library/main/src/com/android/car/setupwizardlib/CarSetupWizardBaseLayout.java b/library/main/src/com/android/car/setupwizardlib/CarSetupWizardBaseLayout.java index a404516..36af464 100644 --- a/library/main/src/com/android/car/setupwizardlib/CarSetupWizardBaseLayout.java +++ b/library/main/src/com/android/car/setupwizardlib/CarSetupWizardBaseLayout.java @@ -284,6 +284,19 @@ class CarSetupWizardBaseLayout extends LinearLayout implements CarSetupWizardLay if (isSplitNavLayoutUsed() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { setOrientation(LinearLayout.HORIZONTAL); + // The vertical bar will not be mirrored in RTL + setLayoutDirection(View.LAYOUT_DIRECTION_LTR); + + View contentContainer = getContentContainer(); + if (contentContainer != null) { + // The content should be mirrored in RTL + contentContainer.setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE); + } + View actionBar = findViewById(R.id.button_container); + if (actionBar != null) { + // The action bar will not be mirrored in RTL + actionBar.setLayoutDirection(View.LAYOUT_DIRECTION_LTR); + } } else { setOrientation(LinearLayout.VERTICAL); } @@ -958,4 +971,14 @@ class CarSetupWizardBaseLayout extends LinearLayout implements CarSetupWizardLay filler.setLayoutParams(fillerParams); } } + + private View getContentContainer() { + View contentContainer = findViewById(R.id.content_container); + if (contentContainer == null) { + // Try ultra-wide container + return findViewById(R.id.ultra_wide_content_container); + + } + return contentContainer; + } } diff --git a/library/main/tests/robotests/src/com/android/car/setupwizardlib/SplitNavLayoutTest.java b/library/main/tests/robotests/src/com/android/car/setupwizardlib/SplitNavLayoutTest.java index c2e8646..34f5a46 100644 --- a/library/main/tests/robotests/src/com/android/car/setupwizardlib/SplitNavLayoutTest.java +++ b/library/main/tests/robotests/src/com/android/car/setupwizardlib/SplitNavLayoutTest.java @@ -71,7 +71,6 @@ public class SplitNavLayoutTest extends BaseRobolectricTest { Activity activity = Robolectric.buildActivity(CarSetupWizardLayoutTestActivity.class) .create() .get(); - View contentContainer = activity.findViewById(R.id.ultra_wide_content_container); ViewGroup.LayoutParams layoutParams = contentContainer.getLayoutParams(); assertThat(layoutParams.width).isEqualTo(PARTNER_CONTENT_WIDTH); @@ -89,6 +88,34 @@ public class SplitNavLayoutTest extends BaseRobolectricTest { assertThat(layoutParams.width).isEqualTo(0); } + @Test + @Config(qualifiers = "iw-w1250dp-land") + public void test_layoutDirectionIsLtr_inRtrLocale() { + Activity activity = Robolectric.buildActivity(CarSetupWizardLayoutTestActivity.class) + .create() + .get(); + + View layout = activity.findViewById(R.id.car_setup_wizard_layout); + assertThat(layout.getLayoutDirection()).isEqualTo(View.LAYOUT_DIRECTION_LTR); + + View buttonContainer = activity.findViewById(R.id.button_container); + assertThat(buttonContainer.getLayoutDirection()).isEqualTo(View.LAYOUT_DIRECTION_LTR); + } + + @Test + @Config(qualifiers = "iw-w1760dp-land") + public void test_layoutDirectionIsLtrInUltraWide_isRtrLocale() { + Activity activity = Robolectric.buildActivity(CarSetupWizardLayoutTestActivity.class) + .create() + .get(); + + View layout = activity.findViewById(R.id.car_setup_wizard_layout); + assertThat(layout.getLayoutDirection()).isEqualTo(View.LAYOUT_DIRECTION_LTR); + + View buttonContainer = activity.findViewById(R.id.button_container); + assertThat(buttonContainer.getLayoutDirection()).isEqualTo(View.LAYOUT_DIRECTION_LTR); + } + private List<ResourceEntry> prepareCustomContentWidth() { ExternalResources.Resources testResources = ExternalResources.injectExternalResources(TEST_PACKAGE_NAME); |