diff --git a/code/th_14_panels.js b/code/th_14_panels.js index 428429d..b68475c 100644 --- a/code/th_14_panels.js +++ b/code/th_14_panels.js @@ -5800,14 +5800,40 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) { alphaValTv.setText(String(currentAlphaByte)); content.addView(alphaRow); - // 操作按钮 + // 操作按钮:不用通用 Flat/Solid Button,避免颜色面板里出现文字/背景适配异常。 + function createColorPanelActionButton(label, primary, onClick) { + var b = new android.widget.TextView(context); + b.setText(label); + b.setGravity(android.view.Gravity.CENTER); + b.setSingleLine(true); + b.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 14); + b.setTypeface(null, android.graphics.Typeface.BOLD); + b.setPadding(self.dp(12), 0, self.dp(12), 0); + try { b.setIncludeFontPadding(false); } catch(eFontPad) {} + try { b.setMinHeight(self.dp(46)); } catch(eMinH) {} + if (primary) { + b.setTextColor(T.onPrimary || android.graphics.Color.WHITE); + try { b.setBackground(self.ui.createStrokeDrawable(T.primary, self.withAlpha(T.primaryDeep, isDark ? 0.38 : 0.20), self.dp(1), self.dp(23))); } catch(eBg1) {} + } else { + b.setTextColor(T.primaryDeep); + try { b.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.34 : 0.24), self.dp(1), self.dp(23))); } catch(eBg2) {} + } + try { b.setClickable(true); b.setFocusable(true); } catch(eClickable) {} + b.setOnClickListener(new android.view.View.OnClickListener({ + onClick: function(v) { + self.touchActivity(); + try { if (onClick) onClick(v); } catch(eBtn) { safeLog(self.L, 'e', "color panel action err=" + String(eBtn)); } + } + })); + return b; + } + var actionRow = new android.widget.LinearLayout(context); actionRow.setOrientation(android.widget.LinearLayout.HORIZONTAL); actionRow.setGravity(android.view.Gravity.CENTER_VERTICAL); - actionRow.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(8)); + actionRow.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(10)); - var btnClear = self.ui.createFlatButton(self, "恢复默认", T.primaryDeep, function() { - self.touchActivity(); + var btnClear = createColorPanelActionButton("恢复默认", false, function() { isFollowTheme = true; selectedColor = ""; updatePreview(); @@ -5819,21 +5845,12 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) { alphaValTv.setText("255"); currentAlphaByte = 255; }); - try { - btnClear.setGravity(android.view.Gravity.CENTER); - btnClear.setSingleLine(true); - btnClear.setMinHeight(self.dp(44)); - btnClear.setClickable(true); - } catch(eClearStyle) { safeLog(self.L, 'w', "color clear style fail: " + String(eClearStyle)); } - var clearLp = new android.widget.LinearLayout.LayoutParams(0, self.dp(44)); + var clearLp = new android.widget.LinearLayout.LayoutParams(0, self.dp(46)); clearLp.weight = 1; clearLp.setMargins(0, 0, self.dp(6), 0); actionRow.addView(btnClear, clearLp); - var okTextColor = T.onPrimary; - try { if (okTextColor === undefined || okTextColor === null) okTextColor = android.graphics.Color.WHITE; } catch(eOkText) { okTextColor = android.graphics.Color.WHITE; } - var btnOk = self.ui.createSolidButton(self, "保存颜色", T.primary, okTextColor, function() { - self.touchActivity(); + var btnOk = createColorPanelActionButton("保存颜色", true, function() { try { var finalColor = isFollowTheme ? "" : String(selectedColor || ""); if (!isFollowTheme && selectedColor) { @@ -5849,15 +5866,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) { } closePopup(); }); - try { - btnOk.setText("保存颜色"); - btnOk.setTextColor(okTextColor); - btnOk.setGravity(android.view.Gravity.CENTER); - btnOk.setMinHeight(self.dp(42)); - btnOk.setSingleLine(true); - btnOk.setClickable(true); - } catch(eOkStyle) { safeLog(self.L, 'w', "color ok style fail: " + String(eOkStyle)); } - var okLp = new android.widget.LinearLayout.LayoutParams(0, self.dp(44)); + var okLp = new android.widget.LinearLayout.LayoutParams(0, self.dp(46)); okLp.weight = 1; okLp.setMargins(self.dp(6), 0, 0, 0); actionRow.addView(btnOk, okLp); diff --git a/manifest.json b/manifest.json index 802305d..ff11bd2 100644 --- a/manifest.json +++ b/manifest.json @@ -54,8 +54,8 @@ "size": 21198 }, "th_14_panels.js": { - "sha256": "3db4a2776f41fe19d2947d20514d4de0fda5499daaa90904fbda59cadd76a90c", - "size": 291603 + "sha256": "74292e7fba694962e009b516111714d2b4be46c5784504efbfee6e9f5624cb14", + "size": 292190 }, "th_15_extra.js": { "sha256": "11a9866ba156c2a7862633530eb0d796a9955698a0c3fad4199dcccd4bb27c47", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260521192648 + "version": 20260521193003 } diff --git a/manifest.sig b/manifest.sig index bad697c..5321b33 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -EuGsaFlEhooYTpjskZyjcwMZHfWCWss7lmXVQAws/2JfV4nK4DRwISkgWAwKCcPzV+vkrupMcMFNLCfFczF8xpbz5qHUE+i9cJkVkJNGZcN71a1XOcNVKp1hwg5VXoDXofqj5KOS0Ir+iEKlNzQG8S4afriGd5de5LiST5TrJfIKlMP8xc1JfYFEDnHi5Ia2C6U9WTujV9YBxOyENXAvcTA8ZJuSeFM4B/D+a1wQdH6ZD2WgcYl2kb4EalnNk/MxzIUcn5O+ek+0hejV4SANPvi4s6QQHYZijScP0jU0o8mJIsC1Be2gxWjwbljU0pL/R7PmAJaq1P9ucKJBJdeggaCq2MeBWHLCsAXUUK3TzIrKS5TLR4c/e+mjmyijhWTBIQvQiu+Ii38xqFK0/NgICFt9Wp/9AOXpRsqaD+BTXaN4BKukBDKq1riShx/bwOuWnkX5rEXF6iuLZGmOips9A36IcWoI8n8YpP34c4DcurQu5K4DDzIHxBLYmKHJvSBe +PXxCENnwPa9E439nekyIgwoQ+81vCMYSXagiCxpmN9KlpFOpFrtbB4NYX+COQvv/QeKZb8nlhxIpxVkCSub+7C7Qgzt6rEeWCOKz6FOjhNrGzTXwtO9wFGq+GnjPBhULRZXOwmEZtUnRfchF0nADfydtBGCnBZ69dqMBkS6MsMNTQltQsPnpCDF3RKqud1XxgA4lntVsCthVjnyRjZ73lS3UdUpaJiFho+H3ijn9HxgmNqYDDPhAEYJhhJlDQWHKL+WH3N5mkkQa0Kx1BSHkmurakt6qVnaxEb7fxVxv7sH6R1hHqFTDQ/JywRzMX49wDYtTrqdiriy77czwaJ6geO2/x1N/zJ1ifhDWgzubqXEiPCayusetkG7UR+c9CUXt1/ACeYcR2psA6SBw4gQ9Y7JwC0aUBwAyz//RUV8Rwfrk3z4KC3xq+9ObZg7TqF6kwKNf3z8rX/d1v05Hca5laSXjsfS4Qeb062thq4Dksd5ELz2C2uH+RjNuIDx41e5I