New method: BaseActivity.setMargins.

This commit is contained in:
Docile-Alligator
2025-06-15 17:30:48 -04:00
parent 95e279a5ad
commit 8a42e4612a
2 changed files with 55 additions and 30 deletions

View File

@ -62,6 +62,8 @@ import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.Utils;
public abstract class BaseActivity extends AppCompatActivity implements CustomFontReceiver {
public static final int IGNORE_MARGIN = -1;
private boolean immersiveInterface;
private boolean changeStatusBarIconColor;
private boolean transparentStatusBarAfterToolbarCollapsed;
@ -337,6 +339,28 @@ public abstract class BaseActivity extends AppCompatActivity implements CustomFo
return result;
}
public static <T extends View> void setMargins(T view, int left, int top, int right, int bottom) {
ViewGroup.LayoutParams lp = view.getLayoutParams();
if (lp instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams marginParams = (ViewGroup.MarginLayoutParams) lp;
if (top >= 0) {
marginParams.topMargin = top;
}
if (bottom >= 0) {
marginParams.bottomMargin = bottom;
}
if (left >= 0) {
marginParams.setMarginStart(left);
}
if (right >= 0) {
marginParams.setMarginEnd(right);
}
view.setLayoutParams(marginParams);
}
}
protected void setTransparentStatusBarAfterToolbarCollapsed() {
this.transparentStatusBarAfterToolbarCollapsed = true;
}

View File

@ -272,35 +272,37 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (navigationWrapper.navigationRailView == null) {
if (navigationWrapper.bottomAppBar.getVisibility() != View.VISIBLE) {
ViewGroup.MarginLayoutParams fabParams = (ViewGroup.MarginLayoutParams)
navigationWrapper.floatingActionButton.getLayoutParams();
fabParams.bottomMargin = (int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.bottom;
fabParams.rightMargin = (int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.right;
navigationWrapper.floatingActionButton.setLayoutParams(fabParams);
setMargins(navigationWrapper.floatingActionButton,
BaseActivity.IGNORE_MARGIN,
BaseActivity.IGNORE_MARGIN,
(int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.right,
(int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.bottom);
} else {
ViewGroup.MarginLayoutParams fabParams = (ViewGroup.MarginLayoutParams)
navigationWrapper.floatingActionButton.getLayoutParams();
fabParams.bottomMargin = allInsets.bottom;
navigationWrapper.floatingActionButton.setLayoutParams(fabParams);
setMargins(navigationWrapper.floatingActionButton,
BaseActivity.IGNORE_MARGIN,
BaseActivity.IGNORE_MARGIN,
BaseActivity.IGNORE_MARGIN,
allInsets.bottom);
}
} else {
if (navigationWrapper.navigationRailView.getVisibility() != View.VISIBLE) {
ViewGroup.MarginLayoutParams fabParams = (ViewGroup.MarginLayoutParams)
navigationWrapper.floatingActionButton.getLayoutParams();
fabParams.bottomMargin = (int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.bottom;
fabParams.rightMargin = (int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.right;
navigationWrapper.floatingActionButton.setLayoutParams(fabParams);
setMargins(navigationWrapper.floatingActionButton,
BaseActivity.IGNORE_MARGIN,
BaseActivity.IGNORE_MARGIN,
(int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.right,
(int) Utils.convertDpToPixel(16, MainActivity.this) + allInsets.bottom);
binding.includedAppBar.viewPagerMainActivity.setPadding(allInsets.left, 0, allInsets.right, 0);
} else {
ViewGroup.MarginLayoutParams navRailParams = (ViewGroup.MarginLayoutParams)
navigationWrapper.navigationRailView.getLayoutParams();
navRailParams.bottomMargin = allInsets.bottom;
navRailParams.setMarginStart(allInsets.left);
navigationWrapper.navigationRailView.setLayoutParams(navRailParams);
navigationWrapper.navigationRailView.setFitsSystemWindows(false);
navigationWrapper.navigationRailView.setPadding(0, 0, 0, 0);
setMargins(navigationWrapper.navigationRailView,
allInsets.left,
BaseActivity.IGNORE_MARGIN,
BaseActivity.IGNORE_MARGIN,
allInsets.bottom);
binding.includedAppBar.viewPagerMainActivity.setPadding(0, 0, allInsets.right, 0);
}
}
@ -314,18 +316,17 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
);
}
View toolbar = binding.includedAppBar.toolbar;
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
params.topMargin = allInsets.top;
params.setMarginStart(allInsets.left);
params.setMarginEnd(allInsets.right);
toolbar.setLayoutParams(params);
setMargins(binding.includedAppBar.toolbar,
allInsets.left,
allInsets.top,
allInsets.right,
BaseActivity.IGNORE_MARGIN);
ViewGroup.MarginLayoutParams navRailParams = (ViewGroup.MarginLayoutParams)
binding.includedAppBar.tabLayoutMainActivity.getLayoutParams();
navRailParams.setMarginStart(allInsets.left);
navRailParams.setMarginEnd(allInsets.right);
binding.includedAppBar.tabLayoutMainActivity.setLayoutParams(navRailParams);
setMargins(binding.includedAppBar.tabLayoutMainActivity,
allInsets.left,
BaseActivity.IGNORE_MARGIN,
allInsets.right,
BaseActivity.IGNORE_MARGIN);
return WindowInsetsCompat.CONSUMED;
}