Experiment: bottom edge

master
M66B 2 months ago
parent b8d2d72387
commit 93e192a309

@ -105,9 +105,12 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
public void setContentView(View view) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean hide_toolbar = prefs.getBoolean("hide_toolbar", !BuildConfig.PLAY_STORE_RELEASE);
boolean edge_to_edge = prefs.getBoolean("edge_to_edge", false);
LayoutInflater inflater = LayoutInflater.from(this);
ViewGroup holder = (ViewGroup) inflater.inflate(R.layout.toolbar_holder, null);
if (BuildConfig.DEBUG)
holder.setBackgroundColor(Color.RED);
AppBarLayout appbar = holder.findViewById(R.id.appbar);
Toolbar toolbar = holder.findViewById(R.id.toolbar);
@ -161,8 +164,17 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
mlp.leftMargin = insets.left;
mlp.topMargin = insets.top;
mlp.rightMargin = insets.right;
mlp.bottomMargin = insets.bottom;
if (!edge_to_edge)
mlp.bottomMargin = insets.bottom;
v.setLayoutParams(mlp);
if (edge_to_edge)
for (View child : getInsetViews(v)) {
mlp = (ViewGroup.MarginLayoutParams) child.getLayoutParams();
mlp.bottomMargin = insets.bottom;
child.setLayoutParams(mlp);
}
} catch (Throwable ex) {
Log.e(ex);
}
@ -214,6 +226,18 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
setContentView(view);
}
private static List<View> getInsetViews(View view) {
List<View> result = new ArrayList<>();
if (view != null && "inset".equals(view.getTag()))
result.add(view);
if (view instanceof ViewGroup) {
ViewGroup group = (ViewGroup) view;
for (int i = 0; i <= group.getChildCount(); i++)
result.addAll(getInsetViews(group.getChildAt(i)));
}
return result;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
EntityLog.log(this, "Activity create " + this.getClass().getName() +

@ -143,7 +143,7 @@ public class FragmentOptions extends FragmentBase {
"cards", "beige", "tabular_card_bg", "shadow_unread", "shadow_border", "shadow_highlight", "dividers", "tabular_unread_bg",
"portrait2", "portrait2c", "portrait_min_size", "landscape", "landscape_min_size",
"column_width",
"hide_toolbar", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"hide_toolbar", "edge_to_edge", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"indentation", "date", "date_week", "date_fixed", "date_bold", "date_time", "threading", "threading_unread",
"show_filtered",
"highlight_unread", "highlight_color", "color_stripe", "color_stripe_wide",

@ -93,6 +93,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private TextView tvColumnWidth;
private SeekBar sbColumnWidth;
private SwitchCompat swHideToolbar;
private SwitchCompat swEdgeToEdge;
private SwitchCompat swNavOptions;
private SwitchCompat swNavCategories;
private SwitchCompat swNavLastSync;
@ -213,7 +214,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
"date", "date_week", "date_fixed", "date_bold", "date_time", "group_category",
"cards", "beige", "tabular_card_bg", "shadow_unread", "shadow_border", "shadow_highlight", "dividers", "tabular_unread_bg",
"portrait2", "portrait2c", "landscape", "close_pane", "open_pane", "column_width",
"hide_toolbar", "nav_options", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"hide_toolbar", "edge_to_edge", "nav_options", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"threading", "threading_unread", "indentation", "seekbar", "actionbar", "actionbar_swap", "actionbar_color",
"highlight_unread", "highlight_color", "color_stripe", "color_stripe_wide",
"avatars", "bimi", "gravatars", "libravatars", "favicons", "favicons_partial", "favicons_manifest", "generated_icons", "identicons",
@ -271,6 +272,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
tvColumnWidth = view.findViewById(R.id.tvColumnWidth);
sbColumnWidth = view.findViewById(R.id.sbColumnWidth);
swHideToolbar = view.findViewById(R.id.swHideToolbar);
swEdgeToEdge = view.findViewById(R.id.swEdgeToEdge);
swNavOptions = view.findViewById(R.id.swNavOptions);
swNavCategories = view.findViewById(R.id.swNavCategories);
swNavLastSync = view.findViewById(R.id.swNavLastSync);
@ -644,6 +646,14 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
}
});
swEdgeToEdge.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE);
swEdgeToEdge.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("edge_to_edge", checked).apply();
}
});
swNavOptions.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -1565,6 +1575,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
sbColumnWidth.setProgress(column_width);
swHideToolbar.setChecked(prefs.getBoolean("hide_toolbar", !BuildConfig.PLAY_STORE_RELEASE));
swEdgeToEdge.setChecked(prefs.getBoolean("edge_to_edge", false));
swNavOptions.setChecked(prefs.getBoolean("nav_options", true));
swNavCategories.setChecked(prefs.getBoolean("nav_categories", false));
swNavLastSync.setChecked(prefs.getBoolean("nav_last_sync", true));

@ -67,6 +67,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:tag="inset"
app:itemIconTint="@color/action_foreground"
app:itemTextColor="@color/action_foreground"
app:labelVisibilityMode="labeled"

@ -78,6 +78,7 @@
android:orientation="vertical"
android:padding="12dp"
android:scrollbarStyle="outsideOverlay"
android:tag="inset"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvCopyright">

@ -188,6 +188,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:tag="inset"
app:itemIconTint="@color/action_foreground"
app:itemTextColor="@color/action_foreground"
app:labelVisibilityMode="labeled"

@ -620,6 +620,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:tag="inset"
app:itemIconTint="@color/action_foreground"
app:itemTextColor="@color/action_foreground"
app:labelVisibilityMode="labeled"

@ -466,6 +466,7 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/title_accessibility_filter_out_seen"
android:padding="12dp"
android:tag="inset"
app:layout_constraintBottom_toTopOf="@+id/etSearch"
app:layout_constraintEnd_toStartOf="@id/ibUnflagged"
app:layout_constraintHorizontal_chainStyle="packed"
@ -481,6 +482,7 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/title_accessibility_filter_out_unflagged"
android:padding="12dp"
android:tag="inset"
app:layout_constraintBottom_toTopOf="@+id/etSearch"
app:layout_constraintEnd_toStartOf="@+id/ibSnoozed"
app:layout_constraintStart_toEndOf="@id/ibSeen"
@ -495,6 +497,7 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/title_accessibility_filter_out_snoozed"
android:padding="12dp"
android:tag="inset"
app:layout_constraintBottom_toTopOf="@+id/etSearch"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ibUnflagged"
@ -530,6 +533,7 @@
android:layout_width="match_parent"
android:layout_height="36dp"
android:background="?attr/colorPrimary"
android:tag="inset"
app:itemIconTint="@color/action_foreground"
app:itemTextColor="@color/action_foreground"
app:labelVisibilityMode="unlabeled"
@ -948,6 +952,7 @@
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="45dp"
android:contentDescription="@string/title_setup_error"
android:tag="inset"
android:tooltipText="@string/title_setup_error"
app:backgroundTint="?attr/colorWarning"
app:srcCompat="@drawable/twotone_warning_24"

@ -597,6 +597,17 @@
app:layout_constraintTop_toBottomOf="@id/tvCaptionNavigation"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swEdgeToEdge"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_edge_to_edge"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swHideToolbar"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swNavOptions"
android:layout_width="0dp"
@ -605,7 +616,7 @@
android:text="@string/title_advanced_nav_options"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swHideToolbar"
app:layout_constraintTop_toBottomOf="@id/swEdgeToEdge"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat

@ -6,6 +6,7 @@
android:layout_height="match_parent"
android:padding="12dp"
android:scrollbarStyle="outsideOverlay"
android:tag="inset"
tools:context="eu.faircode.email.ActivityView">
<androidx.constraintlayout.widget.ConstraintLayout

@ -1552,6 +1552,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:tag="inset"
app:itemIconTint="@color/action_foreground"
app:itemTextColor="@color/action_foreground"
app:labelVisibilityMode="labeled"

@ -573,6 +573,7 @@
<string name="title_advanced_open_pane">Start with two rows or two columns</string>
<string name="title_advanced_column_width">Message column width / row height: %1$s %%</string>
<string name="title_advanced_hide_toolbar">Hide top toolbar when scrolling messages</string>
<string name="title_advanced_edge_to_edge" translatable="false">Edge-to-edge (experimental)</string>
<string name="title_advanced_nav_options">Show navigation menu options</string>
<string name="title_advanced_nav_categories">Show account categories in the navigation menu</string>
<string name="title_advanced_nav_pin">Pin navigation menu</string>

Loading…
Cancel
Save