# ArkUI布局开å‘常è§é—®é¢˜(ArkTS) ## 使用position之åŽheightä¸ç”Ÿæ•ˆ(API 9) **解决措施** 容器组件在使用position之åŽä¼šè„±ç¦»æ–‡æœ¬æµï¼Œå¯¼è‡´å®¹å™¨è„±ç¦»å¤–层容器æŸç¼šï¼Œå¯¼è‡´heightä¸ç”Ÿæ•ˆï¼Œå¯ä»¥å°†å¤–层容器æ¢æˆStackå¯ä»¥è§£å†³è¿™ä¸ªé—®é¢˜ã€‚ ## Grid组件如何实现横å‘滚动(API 9) å°†Grid组件设置当å‰ç½‘æ ¼å¸ƒå±€è¡Œæ•°rowsTemplate且ä¸è®¾ç½®åˆ—数,当内容超出Grid组件宽度时,Gridå¯æ¨ªå‘滚动进行内容展示。 ## List组件与其他组件并列使用时,若未设置List滚动方å‘ä¸Šçš„å°ºå¯¸ï¼Œæ— æ³•æ‹–åŠ¨åˆ°åº•éƒ¨(API 9) ç»™ListåŠ ä¸ŠlayoutWeight属性,设置列表自适应å 满剩余高度。原ç†ï¼šList属于å¯æ»šåŠ¨å®¹å™¨ç»„件,默认高度是å 满全å±å¹•é«˜åº¦ï¼Œå½“出现其他固定高度的组件å 领了å±å¹•çš„部分高度时,需è¦å¼€å‘人员显性的指定List组件å 满剩余高度,而ä¸æ˜¯å…¨å±å¹•é«˜åº¦ã€‚ ## Tabs组件在点击Tab项时是å¦æ”¯æŒç¦æ¢åˆ‡æ¢(API 9) ä¸æ”¯æŒã€‚ ## 如何拦截ä½onBackPress事件,ä¸è§¦å‘页é¢è¿”回(API 9) 在onBackPressä¸è¿”回true表示页é¢è‡ªå·±å¤„ç†è¿”回逻辑,ä¸ä¼šæ‰§è¡Œé»˜è®¤çš„返回逻辑。 **å‚考链接** [自定义组件的生命周期-onBackPress](../reference/apis-arkui/arkui-ts/ts-custom-component-lifecycle.md#onbackpress) ## Listç»„ä»¶æ€Žä¹ˆå®žçŽ°åˆ†ç»„åˆ—è¡¨çš„ç²˜æ€§æ ‡é¢˜æ•ˆæžœ(API 9) å¯ä»¥é€šè¿‡List组件的sticky属性é…åˆListItemGroup组件æ¥å®žçŽ°ã€‚通过给List组件设置sticky属性为StickyStyle.Header,设置ListItemGroupä¸headerå‚æ•°å¯¹åº”çš„å¤´éƒ¨ç»„ä»¶å‘ˆçŽ°ç²˜æ€§æ ‡é¢˜æ•ˆæžœ **å‚考链接** [创建列表-æ·»åŠ ç²˜æ€§æ ‡é¢˜](../ui/arkts-layout-development-create-list.md#æ·»åŠ ç²˜æ€§æ ‡é¢˜) ## 键盘弹出时如何åªè®©æŒ‡å®šUI组件进行上移,而ä¸æ˜¯æ•´ä½“布局(API 10) **解决措施** 键盘弹出时的é¿è®©å¯ä»¥åˆ©ç”¨å®‰å…¨åŒºåŸŸæŽ¥å£expandSafeArea进行UI逻辑é¿è®©æŽ§åˆ¶ã€‚ **å‚考链接** [安全区域](../reference/apis-arkui/arkui-ts/ts-universal-attributes-expand-safe-area.md) ## 有哪些实现图文混排的方å¼ï¼Œæ¯ç§æ–¹å¼çš„优劣点是什么,推è场景是什么(API 10) **解决措施** 1ã€å¦‚æžœåšé¡µé¢å±•ç¤ºï¼Œå¯é€šè¿‡Text嵌套ImageSpan或者容器组件如Rowã€Colunm下嵌套Text&Image组件,推èå‰è€…ï¼› 2ã€å¦‚æžœè¦è¿›è¡Œç¼–辑,å¯ä½¿ç”¨RichEditor控件。 **å‚考链接** [图文混排](../reference/apis-arkui/arkui-ts/ts-basic-components-richeditor.md) ## 如何实现å调布局的效果(API 10) **解决措施** å¯æ»šåŠ¨ç±»ç»„件å¯ä»¥ä½¿ç”¨nestedScroll属性设置嵌套滚动。 **å‚考链接** [Scroll](../reference/apis-arkui/arkui-ts/ts-container-scroll.md) ## 如何解决sidebar侧边æ 出现时,é®æŒ¡ä½ä¸‹æ–¹çš„导航æ 的问题(API 10) **解决措施** 将被é®æŒ¡çš„导航æ 作为SideBarContainer组件的第二个å组件使用,使其æˆä¸ºå†…容区的一部分,SideBarContainer的侧边æ åªä¼šé®æŒ¡å†…容区自身宽度的部分,其余部分å¯ä»¥æ£å¸¸çœ‹åˆ°ã€‚ **å‚考链接** [SideBarContainer](../reference/apis-arkui/arkui-ts/ts-container-sidebarcontainer.md) ## 如何解决使用foreach&lazyforeach循环渲染时,会出现更改数æ®æºæ—¶ï¼Œç•Œé¢ä¸åˆ·æ–°çš„问题(API 10) **解决措施** 如果缺çœkeyGenerator,框架会自动基于itemå’Œindex生æˆkey, 如果函数缺çœï¼Œæ¡†æž¶é»˜è®¤çš„键值生æˆå‡½æ•°ä¸º(item: T, index: number) => { return index + '__' + JSON.stringify(item); }, 修改状æ€å˜é‡æ•°æ®æºæ—¶ï¼ŒForEach或LazyForEach会æ•æ‰åˆ°keyçš„å˜åŒ–,从而通过é‡å»ºç»„件节点æ¥åˆ·æ–°ã€‚ **å‚考链接** [ForEach:循环渲染](../quick-start/arkts-rendering-control-foreach.md) ## CustomDialog,Popupç‰å¼¹çª—如何与页é¢è§£è€¦ï¼Œæœ€ä½³å®žè·µæ˜¯ä»€ä¹ˆæ ·çš„(API 10) **解决措施** 弹框类组件需è¦ç»‘定到对应组件上,由事件触å‘。对于内容å¯ä»¥ä½¿ç”¨å…¨å±€builder,åªéœ€å®šä¹‰ä¸€æ¬¡ã€‚ 全局builder: 定义的è¯æ³•ï¼š @Builder function MyGlobalBuilderFunction(){ ... } 使用方法: MyGlobalBuilderFunction() 全局的自定义构建函数å¯ä»¥è¢«æ•´ä¸ªåº”用获å–。如果ä¸æ¶‰åŠç»„件状æ€å˜åŒ–,建议使用全局的自定义构建方法。 **å‚考链接** 1. [自定义弹窗(CustomDialog)](../reference/apis-arkui/arkui-ts/ts-methods-custom-dialog-box.md) 2. [Popup控制](../reference/apis-arkui/arkui-ts/ts-universal-attributes-popup.md) 3. [@Builder装饰器:自定义构建函数](../quick-start/arkts-builder.md) ## 为什么两个紧挨ç€çš„相åŒé¢œè‰²çš„控件之间会有白线ã€æš—线。如何解决(API 11) **解决措施** 白线ã€æš—çº¿é€šå¸¸æ˜¯å› ä¸ºç›¸é‚»çš„åŒè‰²æŽ§ä»¶è¾¹ç•Œè½åœ¨äº†æµ®ç‚¹æ•°åæ ‡ä¸Šï¼Œå›¾å½¢å±‚åšäº†æŠ—锯齿处ç†ï¼Œè§†è§‰ä¸Šäº§ç”Ÿäº†ä¸€æ¡ç™½çº¿æˆ–暗线。å¯ä»¥é€šè¿‡pixelRound通用属性设置, 使产生白线ã€æš—线两侧的组件边界对é½åˆ°æ•´æ•°åƒç´ åæ ‡ä¸Šã€‚ 使用方法: ```ts Flex(){ Column().height('30%').width('30%').backgroundColor(Color.Blue) .pixelRound({end: PixelRoundCalcPolicy.FORCE_CEIL}) Column().height('30%').width('30%').backgroundColor(Color.Blue) Column().height('30%').width('30%').backgroundColor(Color.Blue) } ``` **å‚考链接** [布局约æŸ](../reference/apis-arkui/arkui-ts/ts-universal-attributes-layout-constraints.md)