fd272:解决息屏后applist列表表冠聚焦失效问题,修复直线列表中英文切换问题 2778/1 2778/head 2779/target/1
authorluozheng <1732036298@qq.com>
Thu, 20 Nov 2025 10:32:31 +0000 (18:32 +0800)
committerluozheng <1732036298@qq.com>
Thu, 20 Nov 2025 10:32:31 +0000 (18:32 +0800)
code/sdk/application/wearable/fd272/nativeapp/nativeui/applist/include/AppItemView.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/applist/include/ApplistView.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/applist/src/AppItemView.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/applist/src/ApplistPresenter.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/applist/src/ApplistView.cpp

index eebb4af..f295ef2 100644 (file)
@@ -33,8 +33,8 @@ private:
     AppItemView &operator = (const AppItemView &);
 
     UIImageView icon_;
-    UILabel label_;
-    AppItem itemInfo_ = { VIEW_INVALID, nullptr, nullptr, nullptr, nullptr };
+    UILabelExt label_;
+    AppItem itemInfo_ = { VIEW_INVALID, nullptr, nullptr, nullptr, nullptr, nullptr, 0 };
 };
 
 class HexagonsItemView : public UIImageView {
index 8cd8194..0a4ad1b 100644 (file)
@@ -120,6 +120,8 @@ public:
     void RefreshAppList(void);
     void StartFootBallAnimator();
     void ResumeWaterFallDraggable();
+    //用来在恢复applist时,请求焦点
+    void ApplistOnResumeRequestFocus(void);
 
 private:
     /* for list style */
index 4b6fa81..87b35c5 100644 (file)
@@ -57,7 +57,7 @@ namespace OHOS {
     {
         itemInfo_ = itemInfo;
         icon_.SetSrc(itemInfo.iconSmall);
-        label_.SetText(itemInfo.label);
+        label_.SetTextId(itemInfo_.TextId);
     }
 
     AppViewId AppItemView::GetViewId()
index d18c039..1f0f12b 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "applist/include/ApplistPresenter.h"
+#include "applist/include/ApplistView.h"
 #include "ability_manager.h"
 #include "securec.h"
 #include "components/ui_hexagons_list.h"
@@ -58,6 +59,8 @@ REGIST_SLICE(VIEW_APPLIST, ApplistView, ApplistPresenter);
         } else if  (GetCurrentStyle() == AppListStyle::WATERFALL_STYLE) {
             view_->ResumeWaterFallDraggable();
         }
+        //申请焦点
+        view_->ApplistOnResumeRequestFocus();
         RootView::GetInstance()->SetOnKeyActListener(KeyInputListener::GetInstance());
     }
 
index 2442348..52a49f9 100644 (file)
@@ -357,7 +357,7 @@ void ApplistView::ArcScaleListStyleOnStart(void)
         ArcScaleList_->EnableAutoAlign(true);
         ArcScaleList_->SetItemSpace(20);
         ArcScaleList_->SetSelectPosition(ARC_SCALE_LIST_HEIGHT / 2);
-        ArcScaleList_->SetRotateFactor(1.0);
+        ArcScaleList_->SetRotateFactor(5.0);
         ArcScaleList_->RequestFocus();
         ArcScaleList_->RefreshList();
 
@@ -886,6 +886,8 @@ void ApplistView::ListStyleOnStart()
     contentList_->SetScrollStateListener(presenter_);
     contentList_->SetMaxScrollDistance(MAX_SCROLL_DIS);
     contentList_->SetYScrollBarVisible(true);
+    contentList_->SetRotateFactor(5.0);
+    contentList_->RequestFocus();
 
     dragListener_ = new AppListOnDragListener();
     if (dragListener_ == nullptr) {
@@ -1097,4 +1099,28 @@ void FootballAnimatorCallback::Callback(UIView *view)
     int16_t angle = EasingEquation::LinearEaseNone(0, 270, animator_->GetRunTime(), animator_->GetTime());
     footView->RotatePlanes(angle, rotateStart, rotateEnd);
 }
+
+void ApplistView::ApplistOnResumeRequestFocus(void)
+{
+    if(nullptr != contentList_)
+    {
+        contentList_->RequestFocus();//直线列表
+    }
+    if(nullptr != ArcScaleList_)
+    {
+        ArcScaleList_->RequestFocus();//弧形列表
+    }
+    if(nullptr != hexagonsList_)
+    {
+        hexagonsList_->RequestFocus();//蜂窝
+    }
+    if(nullptr != CircleListScrollView)
+    {
+        CircleListScrollView->RequestFocus();//拨号盘
+    }
+    if(nullptr != waterfallList_)
+    {
+        waterfallList_->RequestFocus();//瀑布流
+    }
+}
 }