From d835c8d5afb2cf68882725e6599db99ce9fdb661 Mon Sep 17 00:00:00 2001 From: salmon-21 <52450144+salmon-21@users.noreply.github.com> Date: Sat, 21 Mar 2026 17:38:32 +0900 Subject: [PATCH] Fixed: Improve dark mode support for settings and shared activities Replace hardcoded light-only colors with theme attributes so that SettingsActivity, ReportActivity, TextIOActivity, and message dialogs follow the system dark mode setting. Also update toolbar styling to use a neutral surface color instead of the red brand color, and wrap the toolbar in AppBarLayout for proper elevation shadow. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../termux/shared/activities/TextIOActivity.java | 4 ++++ .../termux/shared/interact/MessageDialogUtils.java | 13 +++++++++---- .../src/main/res/layout/dialog_show_message.xml | 6 +++--- .../src/main/res/layout/partial_primary_toolbar.xml | 8 ++++---- termux-shared/src/main/res/values-night/colors.xml | 5 +++++ termux-shared/src/main/res/values-night/themes.xml | 11 +++++++---- termux-shared/src/main/res/values/themes.xml | 7 +++++-- 7 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 termux-shared/src/main/res/values-night/colors.xml diff --git a/termux-shared/src/main/java/com/termux/shared/activities/TextIOActivity.java b/termux-shared/src/main/java/com/termux/shared/activities/TextIOActivity.java index 7cdf6ab0e2..f9f44c53f6 100644 --- a/termux-shared/src/main/java/com/termux/shared/activities/TextIOActivity.java +++ b/termux-shared/src/main/java/com/termux/shared/activities/TextIOActivity.java @@ -24,9 +24,11 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import com.termux.shared.activity.media.AppCompatActivityUtils; import com.termux.shared.interact.ShareUtils; import com.termux.shared.logger.Logger; import com.termux.shared.R; +import com.termux.shared.theme.NightMode; import com.termux.shared.models.TextIOInfo; import com.termux.shared.view.KeyboardUtils; @@ -63,6 +65,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Logger.logVerbose(LOG_TAG, "onCreate"); + AppCompatActivityUtils.setNightMode(this, NightMode.getAppNightMode().getName(), true); + setContentView(R.layout.activity_text_io); mTextIOLabel = findViewById(R.id.text_io_label); diff --git a/termux-shared/src/main/java/com/termux/shared/interact/MessageDialogUtils.java b/termux-shared/src/main/java/com/termux/shared/interact/MessageDialogUtils.java index 9ecb4400e1..a09e349b95 100644 --- a/termux-shared/src/main/java/com/termux/shared/interact/MessageDialogUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/interact/MessageDialogUtils.java @@ -4,7 +4,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; -import android.graphics.Color; +import android.content.res.TypedArray; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -51,7 +51,7 @@ public static void showMessage(Context context, String titleText, String message final DialogInterface.OnClickListener onNegativeButton, final DialogInterface.OnDismissListener onDismiss) { - AlertDialog.Builder builder = new AlertDialog.Builder(context, androidx.appcompat.R.style.Theme_AppCompat_Light_Dialog); + AlertDialog.Builder builder = new AlertDialog.Builder(context, androidx.appcompat.R.style.Theme_AppCompat_DayNight_Dialog); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View view = inflater.inflate(R.layout.dialog_show_message, null); @@ -81,12 +81,17 @@ public static void showMessage(Context context, String titleText, String message dialog.setOnShowListener(dialogInterface -> { Logger.logError("dialog"); + int[] attrs = new int[] { android.R.attr.textColorPrimary }; + TypedArray ta = context.obtainStyledAttributes(attrs); + int textColor = ta.getColor(0, 0xFF000000); + ta.recycle(); + Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE); if (button != null) - button.setTextColor(Color.BLACK); + button.setTextColor(textColor); button = dialog.getButton(AlertDialog.BUTTON_NEGATIVE); if (button != null) - button.setTextColor(Color.BLACK); + button.setTextColor(textColor); }); dialog.show(); diff --git a/termux-shared/src/main/res/layout/dialog_show_message.xml b/termux-shared/src/main/res/layout/dialog_show_message.xml index f1c137c70f..7d55857e8c 100644 --- a/termux-shared/src/main/res/layout/dialog_show_message.xml +++ b/termux-shared/src/main/res/layout/dialog_show_message.xml @@ -17,7 +17,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Title" - android:textColor="@android:color/white"/> + android:textColor="?android:attr/textColorPrimaryInverse"/> + android:textColor="?android:attr/textColorPrimary" + android:textColorLink="?android:attr/textColorLink"/> diff --git a/termux-shared/src/main/res/layout/partial_primary_toolbar.xml b/termux-shared/src/main/res/layout/partial_primary_toolbar.xml index a3f1be50d9..894ee2a24d 100644 --- a/termux-shared/src/main/res/layout/partial_primary_toolbar.xml +++ b/termux-shared/src/main/res/layout/partial_primary_toolbar.xml @@ -1,10 +1,10 @@ - + android:layout_height="wrap_content"> - + diff --git a/termux-shared/src/main/res/values-night/colors.xml b/termux-shared/src/main/res/values-night/colors.xml new file mode 100644 index 0000000000..fea47c6654 --- /dev/null +++ b/termux-shared/src/main/res/values-night/colors.xml @@ -0,0 +1,5 @@ + + + #1FFFFFFF + #0FFFFFFF + diff --git a/termux-shared/src/main/res/values-night/themes.xml b/termux-shared/src/main/res/values-night/themes.xml index 92393cea8a..849ed65116 100755 --- a/termux-shared/src/main/res/values-night/themes.xml +++ b/termux-shared/src/main/res/values-night/themes.xml @@ -9,17 +9,20 @@ -->