diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/BaseSearchFilterUiDialogGenerator.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/BaseSearchFilterUiDialogGenerator.java index 9a8b0f6c9..6beaca67a 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/BaseSearchFilterUiDialogGenerator.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/BaseSearchFilterUiDialogGenerator.java @@ -42,9 +42,17 @@ public abstract class BaseSearchFilterUiDialogGenerator extends BaseSearchFilter return new BaseCreateSearchFilterUI.CreateSortFilterUI(this, context, logic); } + /** + * Create a View that acts as a separator between two other {@link View}-Elements. + * + * @param layoutParams this layout will be modified to have the height of 1 -> to have a + * the actual separator line. + * @return the created {@link SeparatorLineView} + */ @NonNull - protected View createSeparatorLine(@NonNull final ViewGroup.LayoutParams layoutParams) { - final View separatorLine = new View(context); + protected SeparatorLineView createSeparatorLine( + @NonNull final ViewGroup.LayoutParams layoutParams) { + final SeparatorLineView separatorLine = new SeparatorLineView(context); separatorLine.setBackgroundColor(getSeparatorLineColorFromTheme()); layoutParams.height = 1; // always set the separator to the height of 1 separatorLine.setLayoutParams(layoutParams); @@ -60,4 +68,17 @@ public abstract class BaseSearchFilterUiDialogGenerator extends BaseSearchFilter title.setLayoutParams(layoutParams); return title; } + + /** + * A special view to separate two other {@link View}s. + *
+ * class only needed to distinct this special view from other View based views. + * (eg. instanceof) + */ + protected static final class SeparatorLineView extends View { + + private SeparatorLineView(@NonNull final Context context) { + super(context); + } + } } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterChipDialogGenerator.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterChipDialogGenerator.java index 35c9cf96c..33bbb52d7 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterChipDialogGenerator.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterChipDialogGenerator.java @@ -3,6 +3,7 @@ package org.schabi.newpipe.fragments.list.search.filter; import android.content.Context; +import android.view.View; import android.view.ViewGroup; import android.widget.GridLayout; import android.widget.TextView; @@ -37,6 +38,10 @@ public class SearchFilterChipDialogGenerator extends SearchFilterDialogGenerator final TextView filterLabel = createFilterLabel(filterGroup, layoutParams); globalLayout.addView(filterLabel); viewsWrapper.add(filterLabel); + } else if (doWeNeedASeparatorView()) { + final SeparatorLineView separatorLineView = createSeparatorLine(); + globalLayout.addView(separatorLineView); + viewsWrapper.add(separatorLineView); } final ChipGroup chipGroup = new ChipGroup(context); @@ -55,6 +60,15 @@ public class SearchFilterChipDialogGenerator extends SearchFilterDialogGenerator viewsWrapper.add(chipGroup); } + private boolean doWeNeedASeparatorView() { + // if 0 than there is nothing to separate + if (globalLayout.getChildCount() == 0) { + return false; + } + final View lastView = globalLayout.getChildAt(globalLayout.getChildCount() - 1); + return !(lastView instanceof SeparatorLineView); + } + private ViewGroup.MarginLayoutParams setDefaultMarginInDp( @NonNull final ViewGroup.MarginLayoutParams layoutParams, final int left, final int top, final int right, final int bottom) { diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterDialogGenerator.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterDialogGenerator.java index b9128c12b..b1ee9c75f 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterDialogGenerator.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterDialogGenerator.java @@ -239,7 +239,7 @@ public class SearchFilterDialogGenerator extends BaseSearchFilterUiDialogGenerat } @NonNull - private View createSeparatorLine() { + protected SeparatorLineView createSeparatorLine() { return createSeparatorLine(clipFreeRightColumnLayoutParams(true)); }