feat: 统一应用文本颜色由主题控制,支持深色/普通模式自适应

主题改造(mymessagemanager):
  - values/styles.xml + values-night/styles.xml:6种风格x2模式共12个主题
    统一设置 android:textColorPrimary / textColorPrimary / android:textColor / colorTextColor
    指向 @color/text_color_primary
  - values/colors.xml:text_color_primary=#FF000000(普通模式黑色)
  - values-night/colors.xml:text_color_primary=#FF00FF00(深色模式绿色)
  - attrs.xml:声明 textColorPrimary 属性解决 AAPT2 编译错误

清除硬编码文本颜色(跨模块):
  - 移除 13 个布局文件中的 android:textColor 属性(libappbase/libaes/winboll/appbase)
  - 移除 3 个 Java 文件中的 setTextColor(Color.BLACK/white/gray) 调用
  - 移除 ComposeSMSActivity / CharsetRefuseEditDialog 中的自定义文本颜色
  - 移除 toast_custom_view.xml / view_tts_back.xml 中的 android:textColor

CompoundButton 文本颜色适配:
  - ConfirmSwitchView:initView 中读取主题 textColorPrimary 的 ColorStateList 并显式设置
  - activity_appsettings.xml:平台 Switch 替换为 ConfirmSwitchView
  - fragment_main.xml:Switch 添加 textColor=?android:attr/textColorPrimary
  - 10个 RadioButton + 4个 CheckBox 添加 textColor=?android:attr/textColorPrimary
This commit is contained in:
2026-05-09 10:02:44 +08:00
parent 99de6c05ba
commit 55c7f7d327
37 changed files with 201 additions and 134 deletions

View File

@@ -456,7 +456,6 @@ public final class CrashHandler {
int padding = dp2px(16); // 内边距 16dp适配不同屏幕
message.setPadding(padding, padding, padding, padding);
message.setText(mLog); // 设置崩溃日志
message.setTextColor(Color.BLACK); // 文字黑色
message.setTextIsSelectable(true); // 支持文本选择(便于手动复制)
}

View File

@@ -178,7 +178,6 @@ public class GlobalCrashReportView extends LinearLayout {
// 设置默认配色
mTitleColor = Color.WHITE;
mTitleBackgroundColor = Color.BLACK;
mTextColor = Color.BLACK;
mTextBackgroundColor = Color.WHITE;
// 加载布局
inflateView();
@@ -210,7 +209,7 @@ public class GlobalCrashReportView extends LinearLayout {
);
mTextColor = typedArray.getColor(
R.styleable.GlobalCrashActivity_colorText,
Color.BLACK
0
);
mTextBackgroundColor = typedArray.getColor(
R.styleable.GlobalCrashActivity_colorTextBackgound, // 注:原拼写错误,保持与 attrs.xml 一致
@@ -253,7 +252,7 @@ public class GlobalCrashReportView extends LinearLayout {
// 配置日志文本控件样式
if (mTvReport != null) {
mTvReport.setTextColor(mTextColor);
if (mTextColor != 0) mTvReport.setTextColor(mTextColor);
mTvReport.setBackgroundColor(mTextBackgroundColor);
// 可选:设置日志文本换行方式(默认已换行,此处增强可读性)
mTvReport.setSingleLine(false);

View File

@@ -116,7 +116,6 @@ public class LogView extends RelativeLayout {
// 获取Log Level spinner实例
mLogLevelSpinner = findViewById(cc.winboll.studio.libappbase.R.id.viewlogSpinner1);
metTagSearch.setTextColor(mContext.getResources().getColor(R.color.white));
metTagSearch.addTextChangedListener(new TextWatcher() {
@Override
@@ -248,7 +247,6 @@ public class LogView extends RelativeLayout {
}
mSelectAllTAGCheckBox.setLayoutParams(layoutParams2);
//mSelectAllTAGCheckBox.setPadding(0,0,0,0);
mSelectAllTAGCheckBox.setTextColor(mContext.getResources().getColor(R.color.white));
mSelectAllTAGCheckBox.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
@@ -502,7 +500,6 @@ public class LogView extends RelativeLayout {
}
holder.tvText.setLayoutParams(layoutParams);
holder.tvText.setPadding(0,0,0,0);
holder.tvText.setTextColor(mContext.getResources().getColor(R.color.white));
holder.cbChecked.setChecked(item.isChecked());
holder.cbChecked.setLayoutParams(layoutParams);
holder.cbChecked.setPadding(0,0,0,0);

View File

@@ -449,7 +449,6 @@ public class AboutView extends LinearLayout {
TextView tvTitle = new TextView(mItemContext);
tvTitle.setText(mTitle);
tvTitle.setTextSize(16);
tvTitle.setTextColor(mItemContext.getResources().getColor(R.color.gray_900));
llText.addView(tvTitle);
// 内容
TextView tvContent = new TextView(mItemContext);

View File

@@ -154,7 +154,6 @@ public class LogTagSpinner extends Spinner {
// 4. 文字对齐(垂直居中+靠左,符合常规 UI 设计)
//itemTv.setGravity(View.GRAVITY_CENTER_VERTICAL | View.GRAVITY_START);
// 5. 文字颜色(统一深色,可改为项目颜色资源)
itemTv.setTextColor(this.mContext.getColor(R.color.white));
itemTv.setBackgroundColor(this.mContext.getColor(R.color.btn_gray_normal));
// 6. 文字溢出处理(最多 2 行,超出省略,避免长标签换行过多)
itemTv.setSingleLine(false);

View File

@@ -14,7 +14,6 @@
android:layout_height="wrap_content"
android:text="正在监听NFC卡片请贴近设备检测密钥..."
android:textSize="17sp"
android:textColor="@android:color/black"
android:gravity="center"
android:padding="12dp"
android:layout_marginBottom="30dp"/>
@@ -26,7 +25,6 @@
android:layout_height="wrap_content"
android:text="私钥内容:无"
android:textSize="14sp"
android:textColor="@android:color/darker_gray"
android:layout_marginBottom="12dp"
android:maxLines="5"
android:ellipsize="end"/>
@@ -38,7 +36,6 @@
android:layout_height="wrap_content"
android:text="公钥内容:无"
android:textSize="14sp"
android:textColor="@android:color/darker_gray"
android:layout_marginBottom="40dp"
android:maxLines="5"
android:ellipsize="end"/>
@@ -50,7 +47,6 @@
android:layout_height="wrap_content"
android:text="功能按钮待激活"
android:textSize="16sp"
android:textColor="@android:color/white"
android:backgroundTint="@android:color/holo_blue_light"
android:padding="14dp"
android:enabled="false"/>

View File

@@ -13,7 +13,6 @@
android:layout_height="wrap_content"
android:text="应用指纹校验"
android:textSize="16sp"
android:textColor="@color/gray_900"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
@@ -45,8 +44,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:textSize="11sp"
android:gravity="center"
android:textColor="@color/gray_900"/>
android:gravity="center"/>
</LinearLayout>

View File

@@ -12,7 +12,6 @@
android:layout_height="wrap_content"
android:text="设置服务器地址"
android:textSize="16sp"
android:textColor="#212121"
android:textStyle="bold"
android:layout_marginBottom="16dp"/>
@@ -51,8 +50,7 @@
android:layout_height="wrap_content"
android:text="确认"
android:textSize="14sp"
android:backgroundTint="#2196F3"
android:textColor="#FFFFFF"/>
android:backgroundTint="#2196F3"/>
</LinearLayout>

View File

@@ -25,8 +25,7 @@
android:id="@+id/tv_app_name_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/gray_900"/>
android:textSize="18sp"/>
<TextView
android:id="@+id/tv_app_desc"
@@ -34,8 +33,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginBottom="8dp"
android:textSize="14sp"
android:textColor="@color/gray_500"/>
android:textSize="14sp"/>
<View
android:layout_width="match_parent"

View File

@@ -19,7 +19,6 @@
android:layout_height="@dimen/log_button_height"
android:textSize="@dimen/log_text_size"
android:text="Clean"
android:textColor="@color/white"
android:backgroundTint="@drawable/btn_gray_bg"
android:layout_centerVertical="true"
android:id="@+id/viewlogButtonClean"
@@ -34,8 +33,7 @@
android:layout_toRightOf="@+id/viewlogButtonClean"
android:layout_centerVertical="true"
android:id="@+id/viewlogTextView1"
android:background="@color/btn_gray_normal"
android:textColor="@color/black"/>
android:background="@color/btn_gray_normal"/>
<cc.winboll.studio.libappbase.widget.LogTagSpinner
android:layout_width="wrap_content"
@@ -54,14 +52,13 @@
android:text="Selectable"
android:background="@color/btn_gray_normal"
android:id="@+id/viewlogCheckBoxSelectable"
android:padding="@dimen/log_text_padding"
android:textColor="@color/white"/>
android:textColor="?android:attr/textColorPrimary"
android:padding="@dimen/log_text_padding"/>
<Button
android:layout_width="@dimen/log_button_width"
android:layout_height="@dimen/log_button_height"
android:textSize="@dimen/log_text_size"
android:textColor="@color/white"
android:backgroundTint="@drawable/btn_gray_bg"
android:text="Copy"
android:layout_alignParentRight="true"
@@ -89,6 +86,7 @@
android:id="@+id/viewlogCheckBox1"
android:background="@drawable/bg_border_round"
android:layout_marginLeft="5dp"
android:textColor="?android:attr/textColorPrimary"
android:layout_marginRight="5dp"/>
<EditText
@@ -136,7 +134,6 @@
android:layout_height="match_parent"
android:textSize="@dimen/log_text_size"
android:text="Text"
android:textColor="#FF00FF00"
android:textIsSelectable="true"
android:id="@+id/viewlogTextViewLog"/>