Use dark text for light action bar

pull/215/head
M66B 1 year ago
parent e181c249cf
commit 0b33f2017a

@ -89,7 +89,7 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
private boolean contacts; private boolean contacts;
private List<IKeyPressedListener> keyPressedListeners = new ArrayList<>(); private List<IKeyPressedListener> keyPressedListeners = new ArrayList<>();
private static final long ACTIONBAR_ANIMATION_DURATION = 250L; private static final double LUMINANCE_THRESHOLD = 0.7f;
@Override @Override
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
@ -107,8 +107,14 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
boolean hide_toolbar = prefs.getBoolean("hide_toolbar", !BuildConfig.PLAY_STORE_RELEASE); boolean hide_toolbar = prefs.getBoolean("hide_toolbar", !BuildConfig.PLAY_STORE_RELEASE);
boolean edge_to_edge = prefs.getBoolean("edge_to_edge", false); boolean edge_to_edge = prefs.getBoolean("edge_to_edge", false);
int colorPrimary = Helper.resolveColor(this, androidx.appcompat.R.attr.colorPrimary);
double lum = ColorUtils.calculateLuminance(colorPrimary);
LayoutInflater inflater = LayoutInflater.from(this); LayoutInflater inflater = LayoutInflater.from(this);
ViewGroup holder = (ViewGroup) inflater.inflate(R.layout.toolbar_holder, null); ViewGroup holder = (ViewGroup) inflater.inflate(lum > LUMINANCE_THRESHOLD
? R.layout.toolbar_holder_light
: R.layout.toolbar_holder_dark,
null);
if (BuildConfig.DEBUG) if (BuildConfig.DEBUG)
holder.setBackgroundColor(Color.RED); holder.setBackgroundColor(Color.RED);
@ -262,9 +268,12 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
EdgeToEdge.enable(this); EdgeToEdge.enable(this);
int colorPrimary = Helper.resolveColor(this, androidx.appcompat.R.attr.colorPrimary);
double lum = ColorUtils.calculateLuminance(colorPrimary);
WindowInsetsControllerCompat controller = WindowCompat.getInsetsController(window, window.getDecorView()); WindowInsetsControllerCompat controller = WindowCompat.getInsetsController(window, window.getDecorView());
controller.setAppearanceLightStatusBars(false); controller.setAppearanceLightStatusBars(lum > LUMINANCE_THRESHOLD);
controller.setAppearanceLightNavigationBars(false); controller.setAppearanceLightNavigationBars(lum > LUMINANCE_THRESHOLD);
window.setNavigationBarColor(Color.TRANSPARENT); window.setNavigationBarColor(Color.TRANSPARENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
window.setNavigationBarContrastEnforced(false); window.setNavigationBarContrastEnforced(false);

@ -19,7 +19,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:theme="@style/actionBarStyle"> app:theme="@style/actionBarStyleDark">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"

@ -0,0 +1,77 @@
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="eu.faircode.email.ActivityView">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<eu.faircode.email.ToolbarEx
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:theme="@style/actionBarStyleLight">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="Title"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
app:layout_constraintEnd_toStartOf="@+id/count"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:paddingStart="6dp"
android:singleLine="true"
android:text="123"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
android:textSize="12dp"
app:layout_constraintBottom_toBottomOf="@id/title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/title" />
<TextView
android:id="@+id/subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="start"
android:singleLine="true"
android:text="Subtitle"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title" />
</androidx.constraintlayout.widget.ConstraintLayout>
</eu.faircode.email.ToolbarEx>
</com.google.android.material.appbar.AppBarLayout>
<View
android:id="@+id/placeholder"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

@ -638,5 +638,7 @@
<item name="chipCornerRadius">6dp</item> <item name="chipCornerRadius">6dp</item>
</style> </style>
<style name="actionBarStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar"></style> <style name="actionBarStyleLight" parent="ThemeOverlay.AppCompat.ActionBar" />
<style name="actionBarStyleDark" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
</resources> </resources>

Loading…
Cancel
Save