1 关键字

组件;蓝色边框;

2 问题描述

开发板型号:wanger平板

OH版本:OpenHarmony 3.2.3.5

问题现象:Button多了一个蓝色边框不消失

测试步骤:

  1. 安装视频应用;

  2. 点击视频应用,此时【所有视频】按钮没有蓝色边框,点击播放任意一个视频后,返回到视频缩列图页面;

  3. 查看【所有视频】上有一个蓝色边框,切换到最近播放之后,蓝色边框仍存在;

3 问题原因

3.1 正常机制

【所有视频】按钮上没有蓝色边框

3.2 异常机制

【所有视频】上有一个蓝色边框,切换到最近播放之后,蓝色边框仍存在;

4 解决方案

在ets中,出现蓝色框的所有组件里加上.focusable(false)属性

5 定位过程

3.2bate版本源码文件路径foundation\arkui\ace_engine\frameworks\bridge\declarative_frontend\jsview\js_button.cpp

void JSButton::CreateWithLabel(const JSCallbackInfo& info)
{
...
​
ViewStackProcessor::GetInstance()->Push(buttonComponent);
JSInteractableView::SetFocusable(true);
JSInteractableView::SetFocusNode(true);
...
}

在创建button组件的时候做了 JSInteractableView::SetFocusable(true); 给组件focusable属性设置的true。还有其他的组件如list,web等组件也是在创建的时候focusable属性设置的true

6 知识分享

  • 组件的焦点默认值是false,有些组件初始化时设置成true,导致蓝色框出现

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐