解決 RN Switch 組件在安卓端樣式很丑的問題

解決此種問題的方式有很多

  • 可以導入原生庫react-native-switch

  • 切圖 (會缺少動畫)

  • 使用 js 組件

在這里插入圖片描述

這里使用 js 繪制組件(原生體驗)解決此類問題

Switch.tsx

import React, { useEffect, useRef, useState } from 'react';
import { Animated, Pressable, StyleSheet } from 'react-native';interface SwitchProps {value?: boolean;onChange?: (value: boolean) => void;
}const Switch: React.FC<SwitchProps> = ({ value = false, onChange }) => {const switchAnim = useRef(new Animated.Value(0)).current;const switchHandle = () => {onChange?.(!value);};useEffect(() => {const toValue = value ? 23 : 3;Animated.timing(switchAnim, {toValue,duration: 100,useNativeDriver: false, // 此處原生驅動會導致 ios 顏色顯示不對}).start();}, [switchAnim, value]);const backgroundColor = switchAnim.interpolate({inputRange: [0, 25],outputRange: ['#D2D2D2', '#904FF5'],});return (<Pressable onPress={switchHandle}><Animated.View style={[styles.radioContainer, { backgroundColor }]}><Animated.View style={[styles.radio, { transform: [{ translateX: switchAnim }] }]} /></Animated.View></Pressable>);
};const styles = StyleSheet.create({radioContainer: {width: 52,height: 32,borderRadius: 17,justifyContent: 'center',marginRight: 5,},radio: {width: 25,height: 25,backgroundColor: '#FFFFFF',borderRadius: 15,},
});export default (props: SwitchProps) => {const [value, setValue] = useState(props.value || false);// 監聽 props.value 的變化并更新內部狀態useEffect(() => {setValue(props.value ?? false);}, [props.value]);return (<Switchvalue={value}onChange={() => {props.onChange?.(!value);}}/>);
};

用法

<Switch value={value} onChange={(value: boolean)=>{}} />

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78926.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AI】【MCP】搭建私人王炸MCP自動化工作流

目錄 一、什么是MCP 二、MCP大集合 三、準備工作 3.1 安裝node.js 3.2 安裝vscode 3.3 安裝cline插件 3.3.1 安裝 3.3.2 配置Cline 四、配置MCP服務 4.1 Search-mcp服務 4.2 playwright-mcp 服務 前言&#xff1a;夢想組合&#xff0c;輕松辦公&#xff0c;告別手動&a…

Git 實操:如何使用交互式 Rebase 移除指定提交(真實案例分享)

在日常開發中&#xff0c;有時候我們提交了一些不想保留的記錄&#xff0c;比如測試代碼、錯誤的功能提交等。 ?? 在操作 4. 強制推送到遠程倉庫前的注意事項 強制推送&#xff08;git push --force 或 git push -f&#xff09;確實很強大但也危險&#xff0c;因為它會重寫…

11.Excel:函數

一 函數是什么 函數是定義好的公式。 單元格內輸入sum然后tab&#xff0c;框選要求和的范圍&#xff0c;然后回車鍵。 補充&#xff1a;公式。 公式以開頭&#xff0c;可以用于計算&#xff0c;返回數值。 分別點擊各個數值&#xff0c;中間用加號連接。這樣很不方便&#xff…

Springboot使用ThreadLocal提供線程局部變量,傳遞登錄用戶名

文章目錄 概述使用創建ThreadLocalUtil工具類在登錄攔截器中使用ThreadLocal存儲登錄用戶名在/userInfo接口中獲取登錄用戶名 注意事項參考視頻 概述 使用 創建ThreadLocalUtil工具類 utils/ThreadLocalUtil.java package org.example.utils;/*** ThreadLocal 工具類*/ Supp…

1399. 統計最大組的數目

1399. 統計最大組的數目 題目鏈接&#xff1a;1399. 統計最大組的數目 代碼如下&#xff1a; class Solution { public:int countLargestGroup(int n) {int res 0;unordered_map<int, int> um;int maxValue 0;for (int i 1;i < n;i) {string value to_string(i);…

VS Code 插件Git History Diff 使用

右上角 查看單個文件記錄

數學建模論文手的學習日常01

目錄 一.要寫的內容&#xff1a; 二.文章標題&#xff1a; 三.摘要&#xff08;非常非常非常重要&#xff09; 四、關鍵詞&#xff1a; 五、問題重述 六、模型假設 七、符號說明 八、模型的建立與求解 九、模型的分析與檢驗 十、模型的評價、改進與推廣 十一、參考…

深度學習: AI 體育領域

一、引言 在科技與體育深度融合的當下&#xff0c;AI 體育逐漸成為推動體育行業變革的重要力量。深度學習憑借其強大的數據分析與模式識別能力&#xff0c;為 AI 體育帶來了全新的發展機遇。從運動員動作分析到智能健身指導&#xff0c;從賽事預測到運動康復輔助&#xff0c;深…

在 Ubuntu24.04 LTS 上 Docker 部署英文版 n8n 和 部署中文版 n8n-i18n-chinese

一、n8n 簡介 n8n 是一個低代碼&#xff08;Low-Code&#xff09;工作流自動化平臺&#xff0c;可以幫助用戶以非常簡單的方式創建自動化流程&#xff0c;連接不同的應用程序和服務。n8n的設計理念是為了讓復雜的工作流變得簡單易用&#xff0c;同時也支持高度的自定義&#xf…

《系統分析師-第三階段—總結(八)》

背景 采用三遍讀書法進行閱讀&#xff0c;此階段是第三遍。 過程 本篇總結第15章的內容 第15章 總結 系統運行與維護&#xff0c;系統經過測試交付之后&#xff0c;進入運行維護階段&#xff0c;維護分為系統運行、故障維護、系統評價和系統相關的策略。 疑問&#xff1a;…

LeetCode 1295.統計位數為偶數的數字:模擬

【LetMeFly】1295.統計位數為偶數的數字&#xff1a;模擬 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/ 給你一個整數數組 nums&#xff0c;請你返回其中位數為 偶數 的數字的個數。 示例 1&#xff1a; 輸入&#xff1…

DDD是什么?電商系統舉例

一、DDD的基本概念 領域驅動設計&#xff08;Domain-Driven Design&#xff0c;簡稱DDD&#xff09;是由Eric Evans提出的一種軟件開發方法論&#xff0c;旨在應對復雜業務系統的設計和實現。它的核心思想是將軟件的設計與業務領域緊密結合&#xff0c;通過深入理解業務需求&a…

K8S ConfigMap 快速開始

一、什么是 ConfigMap&#xff1f; ConfigMap 是 Kubernetes 中用于存儲非敏感配置數據的 API 對象&#xff0c;支持以鍵值對&#xff08;Key-Value&#xff09;或文件的形式存儲配置&#xff0c;允許將配置與鏡像解耦&#xff0c;實現配置的集中管理和動態更新。 二、主要用…

Prometheus使用Recoding Rules優化性能

通過PromQL可以實時對Prometheus中采集到的樣本數據進行查詢&#xff0c;聚合以及其它各種運算操作。而在某些PromQL較為復雜且計算量較大時&#xff0c;直接使用PromQL可能會導致Prometheus響應超時的情況。這時需要一種能夠類似于后臺批處理的機制能夠在后臺完成這些復雜運算…

C++ RAII 編程范式詳解

C RAII 編程范式詳解 一、RAII 核心概念 RAII&#xff08;Resource Acquisition Is Initialization&#xff0c;資源獲取即初始化&#xff09; 是 C 的核心編程范式&#xff0c;通過將資源生命周期與對象生命周期綁定實現安全、自動化的資源管理。 核心原則&#xff1a; 資源…

Rust 學習筆記:枚舉與模式匹配

Rust 學習筆記&#xff1a;枚舉與模式匹配 Rust 學習筆記&#xff1a;枚舉與模式匹配定義枚舉&#xff08;Enum&#xff09;枚舉變量Option 枚舉及其相對于 NULL 的優勢match 和枚舉與 Option\<T\> 匹配match 應該是詳盡的Catch-all 模式和 _ 占位符使用 if let 和 let e…

《WebGIS之Vue進階教程》(13)ref的實現

1 為什么需要ref 由于proxy只能代理引用類型數據(如: 對象, 數組, Set, Map...), 需要一種方式代理普通類型數據(String, Number, Boolean...) 設計ref主要是為了處理普通類型數據, 使普通類型數據也具有響應式 除此之外, 通過reactive代理的對象可能會出現響應丟失的情況. 使…

Redis 緩存并發問題深度解析:擊穿、雪崩與穿透防治指南

Redis-緩存并發 引言&#xff1a;緩存&#xff0c;高性能架構的基石與并發挑戰一、 緩存擊穿&#xff1a;熱點 Key 失效引發的“單點風暴”1.1 什么是緩存擊穿&#xff1f;1.2 緩存擊穿的風險1.3 緩存擊穿的解決方案1.3.1 互斥鎖&#xff08;Mutex Lock&#xff09;/ 分布式鎖 …

Python 數據智能實戰 (4):智能用戶分群 - 融合行為

寫在前面 —— 超越 RFM 標簽,結合用戶行為與 LLM 文本洞察,實現更精準、更立體的客戶細分 歡迎回來!在前面的學習中,我們已經為 Python 數據智能工具箱添置了與大語言模型 (LLM) 交互的能力,特別是掌握了如何利用 LLM 將非結構化的文本信息轉化為包含深層語義的數值向量…

FreeMarker語法深度解析與Node.js集成實踐指南

一、FreeMarker核心語法體系 1.1 基礎模板結構 <#-- 注釋語法 --> ${expression} <#-- 輸出表達式 --> <#directive paramvalue> <#-- 指令語法 -->1.2 數據類型處理 標量類型深度處理&#xff1a; <#assign num 123.45?floor> <#--…