summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/flag(com.android.documentsui.flags.use_material3)/layout/drawer_layout.xml3
-rw-r--r--res/flag(com.android.documentsui.flags.use_material3)/layout/fixed_layout.xml3
-rw-r--r--res/flag(com.android.documentsui.flags.use_material3)/layout/nav_rail_layout.xml3
-rw-r--r--res/flag(com.android.documentsui.flags.use_material3)/layout/search_chip_row.xml21
-rw-r--r--res/flag(com.android.documentsui.flags.use_material3)/values/dimens.xml5
-rw-r--r--src/com/android/documentsui/HorizontalBreadcrumb.java39
-rw-r--r--src/com/android/documentsui/ProfileTabs.java7
7 files changed, 67 insertions, 14 deletions
diff --git a/res/flag(com.android.documentsui.flags.use_material3)/layout/drawer_layout.xml b/res/flag(com.android.documentsui.flags.use_material3)/layout/drawer_layout.xml
index fc4a22bc6..aeb85442f 100644
--- a/res/flag(com.android.documentsui.flags.use_material3)/layout/drawer_layout.xml
+++ b/res/flag(com.android.documentsui.flags.use_material3)/layout/drawer_layout.xml
@@ -83,7 +83,8 @@
android:id="@+id/horizontal_breadcrumb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="?attr/colorSurfaceBright" />
+ android:background="?attr/colorSurfaceBright"
+ android:paddingHorizontal="@dimen/breadcrumb_padding_horizontal" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/container_save"
diff --git a/res/flag(com.android.documentsui.flags.use_material3)/layout/fixed_layout.xml b/res/flag(com.android.documentsui.flags.use_material3)/layout/fixed_layout.xml
index 5496f0d84..c2a06122a 100644
--- a/res/flag(com.android.documentsui.flags.use_material3)/layout/fixed_layout.xml
+++ b/res/flag(com.android.documentsui.flags.use_material3)/layout/fixed_layout.xml
@@ -115,7 +115,8 @@
<com.android.documentsui.HorizontalBreadcrumb
android:id="@+id/horizontal_breadcrumb"
android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content"
+ android:paddingHorizontal="@dimen/breadcrumb_padding_horizontal" />
</LinearLayout>
diff --git a/res/flag(com.android.documentsui.flags.use_material3)/layout/nav_rail_layout.xml b/res/flag(com.android.documentsui.flags.use_material3)/layout/nav_rail_layout.xml
index bd85b7dac..bfbb83c17 100644
--- a/res/flag(com.android.documentsui.flags.use_material3)/layout/nav_rail_layout.xml
+++ b/res/flag(com.android.documentsui.flags.use_material3)/layout/nav_rail_layout.xml
@@ -147,7 +147,8 @@
<com.android.documentsui.HorizontalBreadcrumb
android:id="@+id/horizontal_breadcrumb"
android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content"
+ android:paddingHorizontal="@dimen/breadcrumb_padding_horizontal" />
</LinearLayout>
<androidx.coordinatorlayout.widget.CoordinatorLayout
diff --git a/res/flag(com.android.documentsui.flags.use_material3)/layout/search_chip_row.xml b/res/flag(com.android.documentsui.flags.use_material3)/layout/search_chip_row.xml
index 559ae3188..62a36f3e8 100644
--- a/res/flag(com.android.documentsui.flags.use_material3)/layout/search_chip_row.xml
+++ b/res/flag(com.android.documentsui.flags.use_material3)/layout/search_chip_row.xml
@@ -20,10 +20,21 @@
android:layout_height="wrap_content"
android:scrollbars="none">
- <com.google.android.material.chip.ChipGroup
- android:id="@+id/search_chip_group"
+ <!-- This additional FrameLayout layer is essential to make HorizontalScrollView work with the
+ marginHorizontal on the ChipGroup below, without this the scroll behavior is weird.
+ Alternatively we could use paddingHorizontal on the ChipGroup below to make it work with
+ HorizontalScrollView, but that cause a weird padding issue in RTL.
+ -->
+ <FrameLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/main_container_padding_start"
- android:paddingVertical="@dimen/search_chip_group_padding_vertical" />
+ android:layout_height="wrap_content">
+
+ <com.google.android.material.chip.ChipGroup
+ android:id="@+id/search_chip_group"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="@dimen/main_container_padding_start"
+ android:paddingVertical="@dimen/search_chip_group_padding_vertical" />
+
+ </FrameLayout>
</HorizontalScrollView>
diff --git a/res/flag(com.android.documentsui.flags.use_material3)/values/dimens.xml b/res/flag(com.android.documentsui.flags.use_material3)/values/dimens.xml
index f9b9eddfd..872cf32ce 100644
--- a/res/flag(com.android.documentsui.flags.use_material3)/values/dimens.xml
+++ b/res/flag(com.android.documentsui.flags.use_material3)/values/dimens.xml
@@ -59,7 +59,12 @@
<dimen name="list_item_icon_padding">16dp</dimen>
<dimen name="list_divider_inset">72dp</dimen>
<!-- block end -->
+ <dimen name="breadcrumb_padding_horizontal">@dimen/space_small_3</dimen>
+ <!-- TODO(b/379776735): remove this after use_material3 flag is launched. -->
<dimen name="breadcrumb_item_padding">8dp</dimen>
+ <dimen name="breadcrumb_item_padding_horizontal">12dp</dimen>
+ <dimen name="breadcrumb_item_padding_vertical">6dp</dimen>
+ <dimen name="breadcrumb_item_arrow_padding">@dimen/space_extra_small_2</dimen>
<dimen name="breadcrumb_item_height">36dp</dimen>
<dimen name="dir_elevation">8dp</dimen>
<dimen name="drag_shadow_size">120dp</dimen>
diff --git a/src/com/android/documentsui/HorizontalBreadcrumb.java b/src/com/android/documentsui/HorizontalBreadcrumb.java
index cb25479b3..f47f464c0 100644
--- a/src/com/android/documentsui/HorizontalBreadcrumb.java
+++ b/src/com/android/documentsui/HorizontalBreadcrumb.java
@@ -16,6 +16,8 @@
package com.android.documentsui;
+import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled;
+
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
@@ -183,8 +185,6 @@ public final class HorizontalBreadcrumb extends RecyclerView implements Breadcru
@Override
public void onBindViewHolder(BreadcrumbHolder holder, int position) {
- final int padding = (int) holder.itemView.getResources()
- .getDimension(R.dimen.breadcrumb_item_padding);
final boolean isFirst = position == 0;
// Note that when isFirst is true, there might not be a DocumentInfo on the stack as it
// could be an error state screen accessible from the root info.
@@ -193,8 +193,39 @@ public final class HorizontalBreadcrumb extends RecyclerView implements Breadcru
holder.mTitle.setText(
isFirst ? mEnv.getCurrentRoot().title : mState.stack.get(position).displayName);
holder.mTitle.setEnabled(isLast);
- holder.mTitle.setPadding(isFirst ? padding * 3 : padding,
- padding, isLast ? padding * 2 : padding, padding);
+ if (isUseMaterial3FlagEnabled()) {
+ final int paddingHorizontal =
+ (int)
+ holder.itemView
+ .getResources()
+ .getDimension(R.dimen.breadcrumb_item_padding_horizontal);
+ final int paddingVertical =
+ (int)
+ holder.itemView
+ .getResources()
+ .getDimension(R.dimen.breadcrumb_item_padding_vertical);
+ final int arrowPadding =
+ (int)
+ holder.itemView
+ .getResources()
+ .getDimension(R.dimen.breadcrumb_item_arrow_padding);
+ holder.mTitle.setPadding(
+ paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical);
+
+ ViewGroup.MarginLayoutParams params =
+ (ViewGroup.MarginLayoutParams) holder.mArrow.getLayoutParams();
+ params.setMarginStart(arrowPadding);
+ params.setMarginEnd(arrowPadding);
+ holder.mArrow.setLayoutParams(params);
+ } else {
+ final int padding = (int) holder.itemView.getResources()
+ .getDimension(R.dimen.breadcrumb_item_padding);
+ holder.mTitle.setPadding(
+ isFirst ? padding * 3 : padding,
+ padding,
+ isLast ? padding * 2 : padding,
+ padding);
+ }
holder.mArrow.setVisibility(isLast ? View.GONE : View.VISIBLE);
holder.itemView.setOnKeyListener(mClickListener);
diff --git a/src/com/android/documentsui/ProfileTabs.java b/src/com/android/documentsui/ProfileTabs.java
index 5aacc22b0..74db6f4bd 100644
--- a/src/com/android/documentsui/ProfileTabs.java
+++ b/src/com/android/documentsui/ProfileTabs.java
@@ -157,9 +157,12 @@ public class ProfileTabs implements ProfileTabsAddons {
int tabMarginSide = (int) mTabsContainer.getContext().getResources()
.getDimension(R.dimen.profile_tab_margin_side);
if (isUseMaterial3FlagEnabled()) {
- // M3 uses the margin value as the right margin, except for the last child.
+ final boolean isRtl = mTabs.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+ // if use_material3 flag is ON, we uses the margin value as the right margin
+ // (left margin for RTL), except for the last child.
if (i != mTabs.getTabCount() - 1) {
- marginLayoutParams.setMargins(0, 0, tabMarginSide, 0);
+ marginLayoutParams.setMargins(
+ isRtl ? tabMarginSide : 0, 0, isRtl ? 0 : tabMarginSide, 0);
}
} else {
marginLayoutParams.setMargins(tabMarginSide, 0, tabMarginSide, 0);