diff options
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); |