如何在相親交友原始碼中實現正方形驗證碼輸入框?
實現效果
1.監聽使用者輸入
var content by remember { mutableStateOf("") }BasicTextField( value = content, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),//設定僅輸入數字 onValueChange = { content = it//儲存使用者輸入的內容 }, modifier = Modifier .drawWithContent { }//清除繪製內容 .matchParentSize()//填充至父佈局大小 )
Box { //重新繪製的驗證碼輸入框 BasicTextField(...}
2.繪製驗證碼內容
Row(horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically) { repeat(digits) {//根據矩形框數量繪製 if (it != 0) { //在中間新增間距 Spacer(modifier = Modifier.width(horizontalMargin)) } //獲取當前框的文字 val text = content.getOrNull(it)?.toString() ?: "" //是否正在輸入的框 val focused = it == content.length //繪製文字 itemScope(text, focused) } }
@Composable fun SimpleVerificationCodeItem(text: String, focused: Boolean) { val borderColor = if (focused) Color.Gray else Color(0xeeeeeeee) Box( modifier = Modifier .border(1.dp, borderColor) .size(55.dp, 55.dp), contentAlignment = Alignment.Center ) { Text( text = text, fontSize = 24.sp, textAlign = TextAlign.Center, maxLines = 1 ) }}
完整程式碼
/** * @param text 文字內容 * @param focused 是否高亮當前輸入框 */@Composable fun SimpleVerificationCodeItem(text: String, focused: Boolean) { val borderColor = if (focused) Color.Gray else Color(0xeeeeeeee) Box( modifier = Modifier .border(1.dp, borderColor) .size(55.dp, 55.dp), contentAlignment = Alignment.Center ) { Text( text = text, fontSize = 24.sp, textAlign = TextAlign.Center, maxLines = 1 ) }}/** * @param digits 驗證碼位數(框數量) * @param horizontalMargin 水平間距 * @param inputCallback 輸入回撥 */@Composable fun VerificationCodeField( digits: Int, horizontalMargin: Dp = 10.dp, inputCallback: (content: String) -> Unit = {}, itemScope: @Composable (text: String, focused: Boolean) -> Unit) { var content by remember { mutableStateOf("") } Box { Row( horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { //繪製框 repeat(digits) { if (it != 0) { //新增間距 Spacer(modifier = Modifier.width(horizontalMargin)) } //獲取當前框的文字 val text = content.getOrNull(it)?.toString() ?: "" //是否正在輸入的框 val focused = it == content.length //繪製文字 itemScope(text, focused) } } BasicTextField(value = content, onValueChange = { content = it inputCallback(it) }, modifier = Modifier .drawWithContent { }//清楚繪製內容 .matchParentSize())//填充至父佈局大小 }}
VerificationCodeField(5){text,focused-> SimpleVerificationCodeItem(text,focused) }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2842937/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 相親交友原始碼中,音訊AAC解碼的實現程式碼原始碼音訊
- Flutter 密碼輸入框 驗證碼輸入框Flutter密碼
- Flutter 驗證碼輸入框Flutter
- 相親交友原始碼開發,前端如何實現水印功能?原始碼前端
- 相親交友原始碼實現相親直播間,移動終端的優化方案原始碼優化
- 在相親交友原始碼中實現視訊連麥直播需要哪些步驟?原始碼
- flutter 自定義驗證碼輸入框實現 verification_code_customFlutter
- 相親交友原始碼實現程式內快取,提升高併發能力!原始碼快取
- 如何在遊戲陪玩app原始碼中實現簡訊驗證碼登入?遊戲APP原始碼
- Android自定義方形驗證碼輸入框Android
- 相親交友原始碼中語音連麥的實現方式,值得一看原始碼
- 如何實現相親交友原始碼的CPU效能優化?解決方案梳理原始碼優化
- 相親交友原始碼開發中,Redis的三種限流方式原始碼Redis
- 相親交友原始碼中的事件循壞,你瞭解多少?原始碼事件
- 直播app系統原始碼,flutter 驗證碼輸入框的簡單封裝APP原始碼Flutter封裝
- 搭建相親交友原始碼 ,API 介面統一格式返回的實現原始碼API
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 登入驗證碼生成kaptcha(輸入驗證碼)APT
- Android仿滴滴出行驗證碼輸入框效果Android
- Android View篇之自定義驗證碼輸入框AndroidView
- 一對一聊天原始碼,驗證碼選擇輸入字母驗證原始碼
- 相親交友原始碼開發,前端API如何請求快取?原始碼前端API快取
- 相親交友原始碼前端效能優化,通常使用哪些手段?原始碼前端優化
- 相親交友原始碼第三方登入的實現及易擴充套件的達成原始碼套件
- Web 端 實現 app “輸入驗證碼 ”的效果WebAPP
- js--手動實現一個常見的簡訊驗證碼輸入框JS
- app直播原始碼,android實現帶下劃線的密碼輸入框APP原始碼Android密碼
- 小說APP原始碼,實現帶下劃線的密碼輸入框APP原始碼密碼
- 微信小程式6位或多位驗證碼/密碼輸入框微信小程式密碼
- 相親交友原始碼開發中會用到的幾種日期處理方法原始碼
- 如何解決相親交友原始碼中Redis快取擊穿、雪崩問題?原始碼Redis快取
- 相親交友原始碼的架構設計,實現合成複用原則需要如何做?原始碼架構
- 說說如何在登入頁實現生成驗證碼功能
- 純css實現輸入框placeholder動效及輸入校驗的示例程式碼CSS
- 直播系統原始碼,Vue 禁止輸入框輸入空格原始碼Vue
- 相親原始碼中移動支付的實現,沒有想象中那麼難原始碼
- Vue使用antd中input元件去驗證輸入框輸入內容Vue元件
- 10種相親交友原始碼客戶端儲存方式,各有優缺點原始碼客戶端