HarmonyOS 鸿蒙Next ArkTs语言TextInput()组件按压时背景色改变,如何取消
HarmonyOS 鸿蒙Next ArkTs语言TextInput()组件按压时背景色改变,如何取消 尝试通过stateStyles来改变点击和按压时候的背景色,但是这个背景色设置为空也无效,好像文档设计textInput()组件的时候就是这样设计的…
类似设置了.enabled(false)属性, 大家有什么好的解决办法吗~
@Styles txtBg(){
.backgroundColor('') // '' 和 null 和 Color.Transparent 都无效
}
TextInput({ placeholder: '请输入' })
.backgroundColor('#c0c0c0')
.border({ radius: 5 })
.stateStyles({ pressed: this.txtBg, clicked: this.txtBg })
更多关于HarmonyOS 鸿蒙Next ArkTs语言TextInput()组件按压时背景色改变,如何取消的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有特定的属性去处理,只能通过变通的其它办法处理,因为底层逻辑就是只要按压事件就会触发那个动画效果:
rawRecognizer_ = AceType::MakeRefPtr<RawRecognizer>();
auto weak = WeakClaim(this);
rawRecognizer_->SetOnTouchDown([weak = WeakClaim(this)](const TouchEventInfo& info) {
auto textField = weak.Upgrade();
if (textField) {
textField->StartPressAnimation(true);
}
});
不像按钮有个属性控制:
if (buttonEventHub->GetStateEffect()) {
auto renderContext = host->GetRenderContext();
if (isSetClickedColor_) {
renderContext->UpdateBackgroundColor(backgroundColor_);
return;
}
}
更多关于HarmonyOS 鸿蒙Next ArkTs语言TextInput()组件按压时背景色改变,如何取消的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个底层是在哪看到的呀,这组件不是看不到底层嘛~,
gitee上有arkui_ace_engine的源码可以翻看底层的一些东西,
找到了解决办法,要把按下/获焦的状态都设置为同一个样式
```javascript
[@Styles](/user/Styles) txtBg(){
.backgroundColor('#FFFFFF') // 这个背景色要和父类的背景色一致
}
TextInput({ placeholder: '请输入' })
.backgroundColor('#c0c0c0')
.border({ radius: 5 })
.stateStyles({ pressed:this.txtBg,focused:this.txtBg })
在别的帖子里发现个新办法,他把TextInput()本身的触摸事件给取消了,然后再点击的时候根据key把焦点移动到对应的组件上
// 第二种办法: 解决TextInput()点击的时候背景闪烁问题
Row() {
TextInput({ placeholder: '请输入' })
.hitTestBehavior(HitTestMode.None) // 自身不响应触摸测试,不会阻塞子节点和兄弟节点的触摸测试
.key("focus")
}.backgroundColor('#C0C0C0')
.onClick(() => {
// 方法语句中可使用的全局接口,调用此接口可以主动让焦点转移至参数指定的组件上。
focusControl.requestFocus("focus") // 点击这个组件的时候,把焦点转移到绑定了"focus"的组件上
})
但是再次获取焦点的时候,键盘不会弹出来了,
2024.1.23 发现不好使! 点击的时候背景不闪烁了, 但是键盘也不弹出了,
还是发现了问题,只有背景色是白色的时候,这个TextInput()组件,点击才不会闪烁,
当背景色改为红绿蓝等,就会发现,每次点击这个TextInput()组件的时候,还是会闪烁一下
作者达达解决了吗,我的还是会闪一下,
没!
等API11 吧,API11中没有这个问题,
TextInput的父类里的属性试试?
把TextInput()的背景色和父类的背景色设置一致,也没用的,找到了其他的解决办法,还是原来的思路,
在HarmonyOS鸿蒙Next中使用ArkTS语言时,TextInput
组件按压时背景色改变是由默认的交互样式引起的。要取消按压时的背景色改变,可以通过设置TextInput
的stateEffect
属性为false
来实现。具体代码如下:
TextInput()
.stateEffect(false)
stateEffect
属性控制组件在交互状态(如按压、聚焦等)下的样式变化。将其设置为false
即可禁用这些状态下的样式变化,从而取消按压时背景色的改变。