Compose Foundation
| 最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 | 
|---|---|---|---|---|
| 2025 年 10 月 22 日 | 1.9.4 | - | 1.10.0-beta01 | - | 
結構
Compose 是由 androidx 中的 7 個 Maven 群組 ID 所組成。每個群組都包含一個指定功能子集,且各有一組專屬的版本資訊。
下表提供各群組的說明和每組版本資訊的連結。
| 群組 | 說明 | 
|---|---|
| compose.animation | 在 Jetpack Compose 應用程式中建構動畫,提供豐富的使用者體驗。 | 
| compose.compiler | 透過 Kotlin 編譯器外掛程式轉換 @Composable 函式,並啟用最佳化功能。 | 
| compose.foundation | 透過現成的構成元素編寫 Jetpack Compose 應用程式,然後進一步擴充基礎,建構出自己的設計系統元件。 | 
| compose.material | 運用現成的 Material Design 元件建構 Jetpack Compose UI。這是更高層級的 Compose 進入點,用意是確保提供的元件與 www.material.io 上所述元件相符。 | 
| compose.material3 | 運用新一代的 Material Design 3 元件建構 Jetpack Compose UI。Material 3 提供新的主題設定和元件,以及動態色彩等 Material You 個人化功能,可呼應全新的 Android 12 視覺風格和系統 UI。 | 
| compose.runtime | Compose 程式設計模型和狀態管理的基本構成元素,以及 Compose Compiler 外掛程式指定的核心執行階段。 | 
| compose.ui | 與裝置互動所需的 Compose UI 基礎元件,包括版面配置、繪圖及輸入。 | 
宣告依附元件
如要新增 Compose 的依附元件,必須將 Google Maven 存放區新增至您的專案。詳情請參閱「Google 的 Maven 存放區」一節。
在應用程式或模組的 build.gradle 檔案中,新增所需構件的依附元件:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
1.10 版
1.10.0-beta01 版
2025 年 10 月 22 日
發布 androidx.compose.foundation:foundation-*:1.10.0-beta01。1.10.0-beta01 版包含這些修訂項目。
API 變更
- 更新所有間接觸控 API,改用間接指標 API 名稱,與指標輸入 API 相符。(I238ce、b/451607214)
- 以 @FrequentlyChangingValue為PagerState.currentPageOffsetFraction加註。(Idfaab)
修正錯誤
- 修正 RTL 版面配置方向的跑馬燈行為。(Ib8be3)
1.10.0-alpha05 版
2025 年 10 月 8 日
發布 androidx.compose.foundation:foundation-*:1.10.0-alpha05。1.10.0-alpha05 版包含這些修訂項目。
API 變更
- PaddingValues現在支援加法和減法,可簡化常見的邊框間距計算。(I327e1、b/244468479)
修正錯誤
- ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled預設為啟用。這項最佳化措施可讓我們更妥善地分配預先擷取期間的工作,例如我們可以在一個 UI 影格中,只針對- LazyColumn下一個項目的部分執行組合,然後在下一個影格中繼續組合其餘部分。(I4c7fe)
1.10.0-alpha04 版
2025 年 9 月 24 日
發布 androidx.compose.foundation:foundation-*:1.10.0-alpha04。1.10.0-alpha04 版包含這些修訂項目。
API 變更
- 已為「PagerState」新增「ScrollIndicatorState」實作檔。(I113b7)
- 已為「LazyStaggeredGridState」新增「ScrollIndicatorState」實作檔。(I1028e)
- 已為「LazyGridState」新增「ScrollIndicatorState」實作檔。(I9e50c)
- 已為「LazyListState」新增「ScrollIndicatorState」實作檔。(I5ee29)
- 已為「ScrollState」新增「ScrollIndicatorState」實作檔。(I27f66)
- 在 ScrollableState介面中導入scrollIndicatorState屬性 (Idca93)
- 已移除 isWindowInsetsModifierLocalNodeImplementationEnabled旗標 (I15e8f、b/440964232)
- 公開 scrollableArea()修飾符,可用於讓元件可捲動,並將內容裁剪至其邊界,以及根據「方向」、「RTL」和reverseScrolling標記自動處理內容捲動方向。(I9471b、b/316559454)
1.10.0-alpha03 版
2025 年 9 月 10 日
發布 androidx.compose.foundation:foundation-*:1.10.0-alpha03。1.10.0-alpha03 版包含這些修訂項目。
API 變更
- 移除 ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0、b/406228525)
- 將用於建立 FillableData例項的工廠函式移至隨附物件。請改用新的工廠方法FillableData.createFrom(value),不要呼叫FillableData(value)。(I2e200、b/441719650)
- 導入新的 BeyondBoundsLayoutModifierNode修飾符節點,可執行焦點搜尋的超出界線版面配置。(I39be1、b/416133658)
- 將 ScrollState.value標示為@FrequentlyChangingValue屬性。(I4723d)
- 導入 LazyLayoutKeyIndexMap和預設實作的工廠。(I4fd0c、b/415038029)
修正錯誤
- Column 和 Row 現在會將項目的實際大小正確傳遞至 Modifier.align,解決自訂Modifier.align實作項目收到錯誤 0 值的問題。(I8194f、b/439716351)
1.10.0-alpha02 版
2025 年 8 月 27 日
發布 androidx.compose.foundation:foundation-*:1.10.0-alpha02。1.10.0-alpha02 版包含這些修訂項目。
API 變更
- 已移除旗標 isFlingContinuationAtBoundsEnabled。(I6b84f)
- 已移除旗標 isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled。(I62380)
- 已移除旗標 isOnScrollChangedCallbackEnabled。(I667dc)
- 已移除旗標 isAutomaticNestedPrefetchEnabled。(I4f416)
- 已移除旗標 DragGesturePickUpEnabled。(Ib8500)
- 導入 ScrollIndicatorStateAPI,用於表示捲軸狀態 (I5e229)
修正錯誤
- 修正使用 Modifier.anchoredDraggable時未叫用confirmValueChange的錯誤。(Iff7cc)
1.10.0-alpha01 版
2025 年 8 月 13 日
發布 androidx.compose.foundation:foundation-*:1.10.0-alpha01。1.10.0-alpha01 版包含這些修訂項目。
API 變更
- 更新 Pager 的預先擷取策略,改用 Cache Window,而非捲動方向的預設 1 個項目。現在,Pager 預設會啟用初始預先擷取功能,並根據 1 個可視區域大小的視窗進行預先擷取,也就是說,我們會盡量以預先擷取的項目填滿 1 個完整可視區域。項目也會保留更久。(I4d45e、b/292136289)
- 已新增 ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled標記,以便在新的實作方式導致行為變更時,停用WindowInsets效能最佳化功能。(I8e912)
- SnapFlingBehavior現在允許在快速移動期間,超出快速移動動畫規格。例如,這可讓您啟用彈跳彈簧規格做為- snapAnimationSpec,產生彈跳的快速動畫。使用快速移動規格執行接近動作時,系統仍會忽略超出範圍的值。(I373c2)
- 現在如果指標向下事件並未發生在焦點節點的界限內,使用滑鼠或觸控板在 ComposeView中指標向下時,系統會自動清除焦點。這樣一來,當使用指標輸入裝置時,使用者會更預期出現「輕觸即可清除焦點」的 UX,而非目前的行為。您可以使用新的AbstractComposeView.isClearFocusOnPointerDownEnabledAPI 選擇不採用這項行為。(I6322b、b/282963174)
- 現在 Scrollable 可更妥善地支援 2 維滑鼠滾輪捲動事件。我們推出了新的測試 API,協助您在 MouseInjectionScope中測試用途。我們也在MouseInjectionScope中為捲動方法導入新的超載,並新增名為isMouseWheel1DAxisLockingEnabled的旗標來控管新行為 (I136df)
- 更新 DragGestureNode,改用原始指標輸入內容,而非暫停指標輸入內容以進行最佳化。這些變更會新增至isNonSuspendingPointerInputInDraggableEnabled旗標後方 (I0fa4b)
- 以 @FrequentlyChangingValue為部分AnchoredDraggableAPI 加註。offset、requireOffset和progress經常變更,不應在撰寫時讀取。請改為從版面配置和繪製階段、效果或組合以外的其他位置存取這些值。(I05539)
- 已移除旗標 isOnScrollChangedCallbackEnabled、isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled、isFlingContinuationAtBoundsEnabled、isAutomaticNestedPrefetchEnabled、DragGesturePickUpEnabled、isPointerInteropFilterDispatchingFixEnabled、isNestedScrollInteropPostFlingFixEnabled、isNestedScrollDispatcherNodeFixEnabled(I36c18)
- 導入 CompositionLocal,可用於修改自動填入功能成功填入時的醒目顯示筆刷。(I52329)
- 在 FocusProperties中新增可自訂的焦點矩形。您現在可以定義自訂焦點區域,不必再預設為可聚焦元素的周框。焦點遍歷系統和可捲動容器的「保持在檢視畫面中」邏輯會使用這項資訊。(Id6555、b/368378073)
- 新增了名為 Tight的LineHeightStyle.Mode。即使可能會截斷較高的字形,這個模式仍會強制執行較小的行高。(Id3849)
- 導入新的 Interpolatable 介面,可自動在不同型別之間插補,前提是其中一個型別知道如何從另一個型別轉換。這個介面用於 Brush 和 Shape 等多種 Compose 類型,但也可在外部使用。(I58eab)
- 新增間接輸入事件,以及指定用於捲動的座標軸。(I58e7c)
- 新增 WindowInsets.cutoutPathAPI,可取得螢幕凹口的路徑 (Ib90b1、b/279636456)
- isWindowInsetsDefaultPassThroughEnabled標記已移除,WindowInsets 預設不會耗用,因此子項 View 預設會收到- WindowInsets。(I888e0、b/412469666)
修正錯誤
- 請暫時停用「isNonSuspendingPointerInputInDraggableEnabled」。(Ia41c4)
- 將預設 minSdk 從 API 21 移至 API 23 (Ibdfca、b/380448311、b/435705964、b/435705223)
- 更新 DraggableAnchors的minPosition/maxPosition說明文件,表示這些 API 應傳回 Float.NaN,與其他DraggableAnchorsAPI 一致。(I0460a)
- 修正錨點空白時 DraggableAnchors#closestAnchor會異常終止的錯誤 (I4e646)
- 提升 DraggableAnchors的效能 (If4065、I0460a)
- TextFieldState.edit { }不再清除復原記錄。而是建立獨立的復原項目。如果希望在呼叫- edit後清除復原堆疊,請使用- TextFieldState.undoState.clearHistory()。(I12c14)
- 新增支援輕觸兩下即可選取 SelectionContainer和BasicTextField(value, onValueChange)多載中的字詞。(Ibb06a)
- 修正小錯誤,讓 AutoboxingStateValuePropertyDetector同時支援 K1 和 K2 (Ie81c1)
- AndroidView 發出的 requestRectangleOnScreen請求現在會正確傳播至 Compose。這樣一來,使用者與EditText等檢視畫面互動時,這些畫面就會停留在螢幕上。(Ibbf4c)
- Column 和 Row 現在會將項目的實際大小正確傳遞至 Alignment.Vertical.align和Alignment.Horizontal.align,解決自訂對齊方式實作項目收到錯誤的 0 值問題。(I3e460、b/349722072)
1.9 版
1.9.4 版
2025 年 10 月 22 日
發布 androidx.compose.foundation:foundation-*:1.9.4。1.9.4 版包含這些修訂項目。
1.9.3 版
2025 年 10 月 8 日
發布 androidx.compose.foundation:foundation-*:1.9.3。1.9.3 版包含這些修訂項目。
1.9.2 版
2025 年 9 月 24 日
發布 androidx.compose.foundation:foundation-*:1.9.2。1.9.2 版包含這些修訂項目。
1.9.1 版
2025 年 9 月 10 日
發布 androidx.compose.foundation:foundation-*:1.9.1。1.9.1 版包含這些修訂項目。
修正錯誤
- 修正在 LazyLists中使用LazyLayoutCacheWindow時發生的當機問題 (c39f5f3)
1.9.0 版
2025 年 8 月 13 日
發布 androidx.compose.foundation:foundation-*:1.9.0。1.9.0 版包含這些修訂項目
自 1.8.0 版以來的重要變更
- Compose 隨附的 Lint 檢查現在需要最低 AGP 版本 8.8.2。如果無法升級 AGP,可以改為在 gradle.properties中使用android.experimental.lint.version=8.8.2(或更新版本),單獨升級 Lint。如要在 IDE 中執行 Compose Lint 檢查,必須使用 Android Studio Ladybug 或更新版本。
- 破壞性變更:現在,沒有 Indication 參數的 clickable、combinedClickable、selectable、toggleable和triStateToggleable多載只支援使用LocalIndication提供的IndicationNodeFactory例項。使用這個版本的 Compose 重新編譯這些修飾符的用法時,系統就會套用這項變更。二進位檔 / 遞移依附元件不受影響。如果您向LocalIndication提供已淘汰的 Indication 實作項目,並使用這些 API,則會在執行階段發生當機情形。這項行為變更有助於提升效能,並允許使用這些修飾符的可組合函式在重組期間略過。您可以暫時使用ComposeFoundationFlags.isNonComposedClickableEnabled=false停用這項行為變更,以便升級 Compose,而不必等待遷移作業完成。這個標記會在一個穩定版發布後移除。如要解決這個問題,請遷移所有已淘汰的「適應指標」實作項目,改用IndicationNodeFactory。您也可以使用具有明確 Indication 參數的超載,這些超載會繼續支援非IndicationNodeFactory的 Indication 執行個體,但基於效能考量,我們不建議這麼做。(I6bcdc、b/316914333)
- 導入 isFlingCancellationWithNestedScrollFixEnabled,修正巢狀捲動中的快速滑動傳播問題。這個 CL 會還原 I9326a 中移除的續滑行為。如果從組合中移除子項,我們仍會取消甩動動畫。(I467f4、b/405910180、b/419049142、b/416784125)
- 在 ContentInViewNode中重新新增scrollAnimationSpec的使用方式。在scrollAnimationSpec淘汰期間,這項行為已移除,導致使用案例中斷。(I1436a、b/403301605)
- 已套用防震效果 LazyLayout。(If5db4)、LazyLayoutPrefetchState、排程方法schedulePrecomposition和schedulePrecompositionAndPremeasure。(I4362f、b/252853717) 和LazyLayoutItemProvider(Icce09、b/261565751)
- 允許「撰寫」功能觸發 ViewTreeObserver.OnScrollChanged。這項行為是在isOnScrollChangedCallbackEnabled旗標下導入。我們也推出了DelegatableNode dispatchOnScrollChanged的擴充功能函式。(I34b9d、b/238109286)
- 推出 Modifier.scrollable2D、Scrollable2DState和隨附 API,用於建立狀態。此外,也推出了常見的捲動擴充功能函式。(Ic61c8、b/214410040)
- PrefetchScheduler和自訂功能已遭淘汰,改用內部實作方式,自動完成所有工作。(I3a9a6、b/420551535)
- TextFieldState.edit { }不再清除復原記錄。而是建立獨立的復原項目。如果希望在編輯呼叫後清除復原堆疊,請使用- TextFieldState.undoState.clearHistory()。(I12c14)
- 內容選單和選取工具列現在都支援智慧型項目 (智慧選取)
- 新增樣式文字 OutputTransformation,可使用state多載來設定TextField的輸出內容樣式。
- TextField:支援內容選單 (按一下滑鼠右鍵即可開啟)。
- 現在從 SelectionContainer中的多個 Text 可組合項複製文字時,系統會在來自不同 Text 可組合項的文字之間加入換行符 \n。(I25332、b/285036739)
- 透過 AnnotatedString導入 API,建立自訂項目符號清單 (I1d066、b/383269496、b/139326648)
- BasicTextField的- state多載會讓游標在大小變更時保持捲動至檢視畫面。(I0eb41、b/406187741)
- 重大變更:background和border修飾符節點現在會實作SemanticsModifierNode。這可能會導致語意樹新增SemanticsNodes,因此,如果測試對語意樹結構做出假設,就會導致測試失敗。舉例來說,如果目前節點和目標節點之間新增了節點,使用onChild、onParent、onSibling和其他類似方法進行斷言的測試可能會失敗。修正這些失敗問題的理想做法,是直接在目標節點中新增testTag。另一種做法是使用較寬鬆的比對器,例如onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))。(I638b5)
1.9.0-rc01 版本
2025 年 7 月 30 日
發布 androidx.compose.foundation:foundation-*:1.9.0-rc01。1.9.0-rc01 版包含這些修訂項目。
修正錯誤
- TextFieldState.edit { }不再清除復原記錄。而是建立獨立的復原項目。如果希望在呼叫- edit後清除復原堆疊,請使用- TextFieldState.undoState.clearHistory()。(I12c14)
1.9.0-beta03 版
2025 年 7 月 16 日
發布 androidx.compose.foundation:foundation-*:1.9.0-beta03。1.9.0-beta03 版包含這些修訂項目。
修正錯誤
- 修正迴歸錯誤,解決提供空白標頭內容時,延遲格線中固定標頭行為中斷的問題。(e3e3400)
1.9.0-beta02 版
2025 年 7 月 2 日
發布 androidx.compose.foundation:foundation-*:1.9.0-beta02。1.9.0-beta02 版包含這些修訂項目。
新功能
- 支援內容選單和選取工具列中的智慧型項目。
API 變更
- 修正錯誤:使用方向鍵時,特定硬體鍵盤或電視遙控器無法在新的 TextFields中移動游標,而是將焦點切換至其他可組合項。新增ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled,以便暫時停用這項修正功能 (如果修正功能造成無法復原的非預期行為)。(Ie1922)
修正錯誤
- 修正問題:如果存在釘選項目,固定標題就不會固定。(I9198d、b/385006133)
- TextObfuscationMode.RevealLastTyped現在會遵循系統設定「TEXT_SHOW_PASSWORD」。(I41c0c)
- 修正錯誤:首次開啟文字工具列時,BasicTextField會錯誤顯示「已貼上剪貼簿內容」警告。(I5fda2)
1.9.0-beta01 版本
2025 年 6 月 18 日
發布 androidx.compose.foundation:foundation-*:1.9.0-beta01。1.9.0-beta01 版包含這些修訂項目。
破壞性變更
- background和- border修飾符節點現在會實作- SemanticsModifierNode。這可能會導致語意樹新增- SemanticsNodes,因此,如果測試對語意樹結構做出假設,就會導致測試失敗。舉例來說,如果目前節點和目標節點之間新增了節點,使用- onChild、- onParent、- onSibling和其他類似方法進行斷言的測試可能會失敗。修正這些失敗問題的理想做法,是直接在目標節點中新增- testTag。另一種做法是使用較寬鬆的比對器,例如- onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))。(I638b5)
API 變更
- 將 Modifier.addTextContextMenuComponents重新命名為appendTextContextMenuComponents。(I4c43f)
- 已移除 AnnotatedOutputTransformation,並將addStyle函式移至TextFieldBuffer。addStyle仍只能從OutputTransformation呼叫。(I9930a、b/417991824)
- Clickable 會經過重寫,不會使用暫停指標輸入做為最佳化方式。這項功能是透過旗標啟用,如果在新實作中遇到錯誤,可以停用旗標 ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled。(I85b65)
- 導入 isFlingCancellationWithNestedScrollFixEnabled,修正巢狀捲動中的快速滑動傳播問題。在這個 CL 中,我們將還原 aosp/3260391 中移除的續播行為。如果從組合中移除子項,我們仍會取消甩動動畫。(I467f4、b/405910180、b/419049142、b/416784125)
- WindowInsetsRulers:已將- rulersIgnoringVisibility變更為上限。將- getDisplayCutoutBounds()變更為- PlacementScope的擴充功能函式。「- WindowInsetsAnimationProperties」已變更為「- WindowInsetsAnimation」,「- getAnimationProperties()」已變更為「- getAnimation()」。(I3816f)
- 已將 InsetsRulers變更為通用程式碼,名稱為WindowInsetsRulers。簡化 API,讓所有插邊都是WindowInsetsRulers。將非尺規動畫屬性擷取至AnimationProperties類別。WindowInsetsRulers.innermostOf()可用於合併多個WindowInsetsRulers。(I2f0c6、b/415012444)
修正錯誤
- 在 ContentInViewNode中重新新增scrollAnimationSpec的使用方式。在scrollAnimationSpec淘汰期間,這項行為已移除,導致使用案例中斷。(I1436a、b/403301605)
1.9.0-alpha04 版
2025 年 6 月 4 日
發布 androidx.compose.foundation:foundation-*:1.9.0-alpha04。1.9.0-alpha04 版包含這些修訂項目。
API 變更
- PrefetchScheduler和自訂功能已遭淘汰,改用內部實作方式,自動完成所有工作。(I3a9a6、b/420551535)
- 更新 Scrollable2DState,在canScroll方法中使用位移,而非角度。(I28694、b/417268474)
- 將 AnnotatedOutputTransformation中的addAnnotation替換成addStyle。(I91c6f、b/417991824)
- 已套用防震效果 LazyLayout。(If5db4)
- 穩定 LazyLayoutPrefetchState的空白建構函式,以及排程方法schedulePrecomposition和schedulePrecompositionAndPremeasure。(I4362f、b/252853717)
- 在 Android 中導入 ProcessTextKey,用於為PROCESS_TEXT意圖動作新增的內容選單項目。(If0ac4)
- 公開內容選單 API。公開 Modifier.addTextContextMenuComponents和Modifier.filterTextContextMenuComponents,以便在內容選單中新增及移除項目。此外,我們也公開了下列基本 API,方便您建構自訂內容選單:- TextContextMenuProvider
- TextContextMenuDataProvider
- TextContextMenuData
- TextContextMenuComponent
- LocalTextContextMenuDropdownProvider
- LocalTextContextMenuToolbarProvider(I1b7b0)
 
- 將 LazyLayoutItemProvider設為穩定版 (Icce09、b/261565751)
- 導入 Android 智慧選取功能,可透過 ComposeFoundationFlags.isSmartSelectionEnabled啟用/停用。此外,它也公開了靜態compositionLocalLocalTextClassifierCoroutineContext,可用於指定啟動TextClassification工作時的CoroutineContext。(I1dbaa、b/139321320)
1.9.0-alpha03 版
2025 年 5 月 20 日
發布 androidx.compose.foundation:foundation-*:1.9.0-alpha03。1.9.0-alpha03 版包含這些修訂項目。
API 變更
- 新增 AnnotatedOutputTransformation,可在轉譯前將註解新增至TextField。(Ibc6f0、b/389978748)
- 推出 LazyLayoutMeasurePolicy,並將LazyLayoutMeasureScope設為穩定版。(I8c5df、b/252853717)
- BasicSecureTextField現在會升起內部- BasicTextField的 ScrollState。(I6e576)
- 導入 Modifier.onFirstVisible和Modifier.onVisibilityChanged修飾符,這些是建構在Modifier.onLayoutRectChanged之上的高階修飾符。這些修飾符專為處理許多常見的應用程式需求而建構,例如記錄曝光次數、自動播放影片等。這些修飾符的建構方式以效能為考量,因此可在重要的清單式情境中使用,不必擔心犧牲捲動效能。除了這些修飾符 API 之外,我們還新增了其他 API,以支援這些用途,並讓開發人員更輕鬆地建立完全符合用途的類似自訂修飾符。RelativeLayoutBounds(I759b8)
- 推出 detectDragGestures超載,可控制觸控斜率和螢幕方向鎖定。(Iadb0d)
- 推出 Modifier.scrollable2D、Scrollable2DState和隨附 API,用於建立狀態。此外,也推出了常見的捲動擴充功能函式。(Ic61c8、b/214410040)
- Compose 64 位元顏色值無法直接與 Android ColorLongs比較,因為部分色彩空間的色彩空間 ID 順序有誤。我們新增了toColorLong()和fromColorLong()這兩個 API,方便您轉換 Android 色彩空間。(I36899)
修正錯誤
- 現在從 SelectionContainer中的多個 Text 可組合項複製文字時,系統會在來自不同 Text 可組合項的文字之間加入行分隔符\n。(I25332、b/285036739)
1.9.0-alpha02 版
2025 年 5 月 7 日
發布 androidx.compose.foundation:foundation-*:1.9.0-alpha02。1.9.0-alpha02 版包含這些修訂項目。
API 變更
- 修正指標輸入變更在 DragGestureNode中新增至VelocityTracker的方式,這項操作可透過新的isOffsetPositionBeforeAddingToVelocityTrackerEnabled旗標控管。(Ic7992、b/292556787、b/236451818)
- 公開 await[Vertical/Horizontal]PointerSlopOrCancellation(I6968b、b/298903681)
- AbstractComposeView.consumeWindowInsets現已預設為 false。設為 false 時,- WindowInsets會自動調整子項大小和位置,因此不再需要預設為 true。修正子項 View 預設未收到- WindowInsets更新的問題。如要停用這項更新,開發人員可以將實驗性- ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled變更為 true,或最好是在所有 Compose 檢視區塊執行個體上將- AbstractComposeView.consumeWindowInsets設為 true。(I6fa0a、b/411868840)
外部貢獻
- 修正 Pager 在 beyondViewportPageCount 值極大時會異常終止的問題 (Idb2db)
1.9.0-alpha01 版
2025 年 4 月 23 日
發布 androidx.compose.foundation:foundation-*:1.9.0-alpha01。1.9.0-alpha01 版包含這些修訂項目。
行為變更
- Compose 隨附的 Lint 檢查現在需要最低 AGP 版本 8.8.2。如果無法升級 AGP,可以改為在 - gradle.properties中使用- android.experimental.lint.version=8.8.2(或更新版本),單獨升級 Lint。如要在 IDE 中執行 Compose Lint 檢查,必須使用 Android Studio Ladybug 或更新版本。
- 破壞性變更:現在,沒有 Indication 參數的 - clickable、- combinedClickable、- selectable、- toggleable和- triStateToggleable多載只支援使用- LocalIndication提供的- IndicationNodeFactory例項。使用這個版本的 Compose 重新編譯這些修飾符的用法時,系統就會套用這項變更。二進位檔 / 遞移依附元件不受影響。如果您向- LocalIndication提供已淘汰的 Indication 實作項目,並使用這些 API,則會在執行階段發生當機情形。這項行為變更有助於提升效能,並允許使用這些修飾符的可組合函式在重組期間略過。您可以暫時使用- ComposeFoundationFlags.isNonComposedClickableEnabled=false停用這項行為變更,以便升級 Compose,而不必等待遷移作業完成。這個標記會在一個穩定版發布後移除。如要解決這個問題,請遷移所有已淘汰的「適應指標」實作項目,改用- IndicationNodeFactory。您也可以使用具有明確 Indication 參數的超載,這些超載會繼續支援非- IndicationNodeFactory的 Indication 執行個體,但基於效能考量,我們不建議這麼做。(I6bcdc、b/316914333)
API 變更
- 透過 AnnotatedString導入 API,建立自訂項目符號清單 (I1d066、b/383269496、b/139326648)
- 允許「撰寫」功能觸發 ViewTreeObserver.OnScrollChanged。這項行為是在isOnScrollChangedCallbackEnabled旗標下導入。我們也推出了DelegatableNode dispatchOnScrollChanged的擴充功能函式。(I34b9d、b/238109286)
- 使用 Kotlin 2.0 發布的專案必須使用 KGP 2.0.0 以上版本 (Idb6b5)
- 新增對 TextFieldState的 lint 檢查支援,確保系統會在組合中記住該項目。建議您改用rememberTextFieldState。(I53d74)
- 新增 FocusRequester的 Lint 檢查支援,確保系統會在組合中記住該項目 (I6bf91)
- 新增對 BringIntoViewRequester的 lint 檢查支援,確保系統會在組合中記住該項目。(Ibfba6)
- 在格線和清單策略中導入 schedulePrefetch呼叫的範圍,以配合LazyListPrefetchState提供大小和索引資訊的功能。(Iad80c)
- 破壞性變更:現在,沒有 Indication 參數的 clickable、combinedClickable、selectable、toggleable和triStateToggleable多載只支援使用LocalIndication提供的IndicationNodeFactory例項。使用這個版本的 Compose 重新編譯這些修飾符的用法時,系統就會套用這項變更。二進位檔 / 遞移依附元件不受影響。如果您向LocalIndication提供已淘汰的 Indication 實作項目,並使用這些 API,則會在執行階段發生當機情形。這項行為變更有助於提升效能,並允許使用這些修飾符的可組合函式在重組期間略過。您可以暫時使用ComposeFoundationFlags.isNonComposedClickableEnabled=false停用這項行為變更,以便升級 Compose,而不必等待遷移作業完成。這個標記會在一個穩定版發布後移除。如要解決這個問題,請遷移所有已淘汰的「適應指標」實作項目,改用IndicationNodeFactory。您也可以使用具有明確 Indication 參數的超載,這些超載會繼續支援非IndicationNodeFactory的 Indication 執行個體,但基於效能考量,我們不建議這麼做。(I6bcdc、b/316914333)
- 導入可控制自動巢狀預先擷取行為的旗標:isAutomaticNestedPrefetchEnabled(I8d448)
- 針對 LazyGridState和rememberLazyGridState導入超載,以採用LazyLayoutCacheWindow。(I51151)
- 新增視窗插邊的尺規。新增 DerivedRuler,以便從另一個尺規計算尺規。修改PlacmentScope以實作密度。(I658bc、b/359260964)
- 新增零引數 WindowInsets()工廠函式,方便建立空白的WindowInsets。(I65f62、b/395311689)
- 為空白的 PaddingValues新增PaddingValues.Zero。(If193e、b/386255688)
修正錯誤
- BasicTextField的- state多載會讓游標在大小變更時保持捲動至檢視畫面。(I0eb41、b/406187741)
- 更新 LazyListPrefetchStrategy和LazyGridPrefetchStrategy中的onVisibleItemsUpdatedAPI,以提供初始狀態資訊。(If2cfa)
1.8 版
1.8.3 版
2025 年 6 月 18 日
發布 androidx.compose.foundation:foundation-*:1.8.3。1.8.3 版包含這些修訂項目。
1.8.2 版
2025 年 5 月 20 日
發布 androidx.compose.foundation:foundation-*:1.8.2。1.8.2 版包含這些修訂項目。
修正錯誤
- 修正了問題,避免計算要載入的項目數量時,因除以零而導致焦點搜尋失敗。將檢查套用至使用 LazyLayoutBeyondBoundsState的所有版面配置。(8e6dc8)
1.8.1 版
2025 年 5 月 7 日
發布 androidx.compose.foundation:foundation-*:1.8.1。1.8.1 版包含這些修訂項目。
修正錯誤
- 修正 BasicText和TextAutoSize的錯誤,使用TextOverflow.Ellipsize時不會再導致文字小於最佳大小。(I1e1d8、b/396582066)
- 修正 BasicTextField中的錯誤,此錯誤會在TextFieldDecorator略過呼叫innerTextField時,導致各種異常終止。(I2638c)、b/308398612
- 修正 TextField中的錯誤,這個錯誤會導致文字工具列和選取控點在TextFieldState執行個體變更時完全消失。(I8068a),b/390477786
- 修正 BasicText中的錯誤:當textAlign設為非預設值時,變更最小寬度限制不會更新文字的放置位置。(I77a96)、b/406305552
1.8.0 版
2025 年 4 月 23 日
發布 androidx.compose.foundation:foundation-*:1.8.0。1.8.0 版包含這些修訂項目。
1.8.0-rc03 版
2025 年 4 月 9 日
發布 androidx.compose.foundation:foundation-*:1.8.0-rc03。1.8.0-rc03 版包含這些修訂項目。
1.8.0-rc02 版
2025 年 3 月 26 日
發布 androidx.compose.foundation:foundation-*:1.8.0-rc02。1.8.0-rc02 版包含這些修訂項目。
1.8.0-rc01 版
2025 年 3 月 12 日
發布 androidx.compose.foundation:foundation-*:1.8.0-rc01。1.8.0-rc01 版包含這些修訂項目。
1.8.0-beta03 版
2025 年 2 月 26 日
發布 androidx.compose.foundation:foundation-*:1.8.0-beta03。1.8.0-beta03 版包含這些修訂項目。
修正錯誤
- 新增了 InputText語意屬性,可擷取套用輸出轉換前的文字欄位值。(Iae46a、b/395911609、b/176949051)
- 已移除淘汰的 AutoSize超載。請改用TextAutoSizeAPI,這些 API 的功能相同。(I2c90f)
- 修正 TextAutoSize的快取問題,如果第二次版面配置傳遞的限制條件相同,系統可能會使用第二大的合適字型大小,而非最大的字型大小。(Id367f)
1.8.0-beta02 版
2025 年 2 月 12 日
發布 androidx.compose.foundation:foundation-*:1.8.0-beta02。1.8.0-beta02 版包含這些修訂項目。
修正錯誤
- 修正問題:使用 LayoutModifierNode的過度捲動實作項目無法在捲動容器內正常運作。
1.8.0-beta01 版
2025 年 1 月 29 日
發布 androidx.compose.foundation:foundation-*:1.8.0-beta01。1.8.0-beta01 版包含這些修訂項目。
API 變更
- 已移除 SemanticsNodeInteraction.semanticsId()。請改用SemanticsNodeInteraction.fetchSemanticsNode().id。(Ie397a)
- 將 requestAutofillAPI 重新編寫為存在於自動填入管理員外部。(Id1929)
- ContextualFlowRow和- ContextualFlowColumn已標示為已淘汰。這項實驗性元件是在 1.7 版中推出,尚未穩定,且實作方式不盡理想。日後可能會提供元件,解決這個元件原本要解決的用途。- FlowRow和- FlowColumn具有實驗性超載,這些超載是在 1.7 中導入,包含- overflow參數。這項參數已淘汰,請改用不含這項參數的超載。這些多載的預設「溢位」行為將為「剪輯」,與推出時相同。
- 許多 ContextualFlowRow的用途都可以透過FlowRow達成,但我們也瞭解這並非完全適用。ContextualFlowRow完全可在使用者空間中實作,您也可以嘗試複製實作內容並視需要調整。我們希望日後能以不同方式解決這些用途。(Ibafec)
 
修正錯誤
- 修正文字版面配置,避免動畫期間有時會錯誤翻譯刪節號,詳情請參閱 b/389707025 (Ie55b1、b/389707025)
- 修正 BasicText中的錯誤,並將TextAutoSize和maxLines設為 1。(Ic0450、b/376834366)
- 文字的最低內在高度現在會將 minLines參數納入考量。也就是說,回報的最小內在高度不會小於滿足minLines參數所需的高度 (I225f9、b/388299762)
1.8.0-alpha08 版
2025 年 1 月 15 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha08。1.8.0-alpha08 版包含這些修訂項目。
API 變更
- AutoSize:已將 AutoSize重新命名為TextAutoSize,並發布可建立自訂TextAutoSize實作項目的 API。如需自訂文字自動調整大小的導入範例,請參閱TextAutoSizeSample。(I85756)
- 已將 DetectTapGesturesEnableNewDispatchingBehavior功能旗標移至ComposeFoundationFlags,並重新命名為isDetectTapGesturesImmediateCoroutineDispatchEnabled。舊版旗標已淘汰,現在會改為委派給ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled。(I62932)
修正錯誤
- 預設為啟用 DetectTapGesturesEnableNewDispatchingBehavior。TapGestureDetectorAPI 現在預設會使用新的調度行為 (立即調度)。(I9f2bc、b/369648479)
- 修正 requiredWidth/Height/Size修飾符,以正確處理內建函式大小。(Ie3d7d、b/368113212)
外部貢獻
- 基礎架構中的 BasicTooltip和 Material 3 中的BasicTooltip/Tooltip均已通用化。(Ifc2e6)
- 新增了 Clipboard 介面和對應的組合本機。(I80809)
1.8.0-alpha07 版
2024 年 12 月 11 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha07。1.8.0-alpha07 版包含這些修訂項目。
API 變更
- 已刪除 ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled標記,該標記可協助還原從BasicText移除內部graphicsLayer的作業。如果您使用過這個標記,請提出錯誤報告,說明原因。此外,您也可以將Modifier.graphicsLayer()傳遞至BasicText呼叫,以達到與先前相同的行為。(Id9f90)
- 為新的 stickyHeaderDSL 新增預設實作。(I68986)
- 具有 LocalAutofillHighlightColor組合本機,使用 Color 型別。(I0e05b)
- OverscrollEffect#withoutDrawing已重新命名為- OverscrollEffect#withoutVisualEffect。(I1a154)
修正錯誤
- 後續修正 AnchoredDraggable的目標計算問題,此問題會導致特定滑動操作在錯誤的錨點結算。(I23b87、b/367660226)
外部貢獻
- 在 UI 中新增 BringIntoViewResponderModifierNode,提供實作「帶入檢視畫面」功能的新方式,並允許在平台層級實作 (Ia6dd8)
- 我們稍微變更了游標的繪製方式。您可以使用 LocalCursorBlinkEnabled在測試中停用游標繪製功能。(I4c697)
1.8.0-alpha06 版
2024 年 11 月 13 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha06。1.8.0-alpha06 版包含這些修訂項目。
API 變更
- 新增 stylusHoverIcon修飾符。(Iff20a、b/331289114)
- 淘汰了 AnchoredDraggableState的confirmValueChange。不應否決狀態變更,而是將不允許的錨點從有效錨點集中移除,並使用OverscrollEffect指出所要求動作無法使用。(Ia717f)
- 將自動填入管理工具變更為介面。(I84914、b/376080755)
- 新增 OverscrollEffect#withoutDrawing和OverscrollEffect#withoutEventHandlingAPI,這些 API 會建立所提供過度捲動效果的包裝例項,分別不會繪製 / 處理事件,因此可在分派事件的元件以外的元件中,算繪過度捲動效果。舉例來說,您可以停用在延遲清單內繪製過度捲動,然後在頂端 / 其他位置分別繪製過度捲動。(Idbb3d、b/266550551、b/204650733、b/255554340、b/229537244)
- 在文字工具列中新增自動填入支援功能。(Ie6a4c)
- 淘汰 OverscrollConfiguration和LocalOverscrollConfiguration,並新增rememberPlatformOverscrollFactory,以建立預設過度捲動實作的例項 / 自訂參數。如要停用過度捲動,請使用LocalOverscrollFactory provides null,而非LocalOverscrollConfiguration provides null。如要變更發光顏色 / 邊框間距,請使用LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding),而非LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)。(Ie71f9、b/255554340、b/234451516)
- 將 OverscrollEffect的effectModifier屬性變更為node: DelegatableNode,與其他 API 保持一致。(Ic0b46、b/255554340)
- 移除實驗性 GlobalAssertionsAPI。這個屬性的用途是執行無障礙檢查,請改用enableAccessibilityChecks()。(I59322)
1.8.0-alpha05 版
2024 年 10 月 30 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha05。1.8.0-alpha05 版包含這些修訂項目。
新功能
- 支援自動調整文字大小。將 AutoSize例項 (例如AutoSize.StepBased) 傳遞至您喜愛的文字可組合函式 (例如BasicText),即可看到文字大小會根據可用空間調整!(Ice7e0、b/139320827)
- 新增 OverscrollFactory和LocalOverscrollFactoryAPI,可在階層中設定過度捲動。系統預設會使用透過LocalOverscrollFactory提供的值建立OverscrollEffect。如要從目前提供的工廠建立並記憶效果,請使用rememberOverscrollEffect()。(I51ca4、b/255554340)
API 變更
- 導入 CompositionLocal,可用於修改自動填入成功填寫時的醒目顯示色調。(I32092)
- 已移除 ScrollableDefaults.overscrollEffect,請改用rememberOverscrollEffect。這會建立LocalOverscrollFactory提供的目前過度捲動實作項目例項。(I1651a、b/255554340)、(b/234451516)
- 推出全新 AutofillManager介面,可用於微調使用者的自動填入流程,以及啟用新版自動填入功能的isSemanticAutofillEnabled標記。(I9d484)
- 移除 CombinedClickableNode。這個實驗性 API 暫時公開,是為瞭解除效能工作封鎖,但現在已不需要。請改為直接使用Modifier.combinedClickable,就像使用其他修飾符 API 一樣。(I4b658)
- 為 horizontalScroll、verticalScroll、LazyColumn、LazyRow、LazyHorizontalGrid、LazyVerticalGrid、LazyHorizontalStaggeredGrid、LazyVerticalStaggeredGrid、HorizontalPager和VerticalPager新增多載,支援指定自訂OverscrollEffect。系統會接收事件,並在這些元件的界線內算繪。OverscrollEffect請注意,系統不支援繪製兩次相同的OverscrollEffect,因此您無法使用Modifier.overscroll分別繪製提供給其中一個元件的相同OverscrollEffect。日後我們將另行說明如何繪製這些元件邊界外的過度捲動。(I2dc42、b/266550551、b/234274772、b/224572538、b/353805117)
1.8.0-alpha04 版
2024 年 10 月 16 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha04。1.8.0-alpha04 版包含這些修訂項目。
API 變更
- 新增 DelegatableNode#onDensityChange和DelegatableNode#onLayoutDirectionChange回呼,允許在這些節點狀態變更時更新節點狀態。(I04f3e、b/340662451)
- Paragraph 和 ParagraphIntrinsics現在會取得套用至AnnotatedString的所有註解清單,先前只會取得SpanStyles清單。(I12f80)
- 推出 PointerInputModifierNode#touchBoundsExpansion,可用於放大單一指標輸入修飾符的觸控界限。(Iccf02、b/335339283)
修正錯誤
- 修正在某些情況下,傳遞至 AnchoredDraggableDefaults.flingBehavior的位置門檻未正確考量的錯誤。(Ifdf0d、b/367660226)
- 修正巢狀可捲動項目在持續滑動期間從節點樹狀結構中移除的問題。現在這些節點會取消快速滑動,並正確傳送 onPostFling事件和剩餘速度。我們也推出NewNestedScrollFlingDispatchingEnabled旗標,可控制發生迴歸時的行為。我們會在 Beta 版推出前移除這個標記。(I05c37、b/371168883)
- 修正錯誤:傳遞至 Modifier.anchoredDraggable的OverscrollEffects會收到 2D 增量,而非 1D。(Ie52c0)
1.8.0-alpha03 版
2024 年 10 月 2 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha03。1.8.0-alpha03 版包含這些修訂項目。
API 變更
- Kotlin 版本更新至 1.9 (I1a14c)
- 導入 DraggableAddDownEventFixEnabled旗標 (I848d5)
- 推出名為「輪轉介面」的新語意角色,模擬 Pager 中的清單行為,以利無障礙服務使用。(Id354b、b/354109776、b/239672673)
- 已從 BasicText可組合函式中移除隱含的graphicsLayer修飾符。新增實驗性ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled旗標,可還原為舊版行為。(Ie478d)
- 新增 Modifier.recalculateWindowInsets(),即使父項未對齊子項,階層中的子項也能使用insetsPadding。consumeWindowInsets()(I7f9e4)
修正錯誤
- 在 detectDragGestures、可拖曳和可捲動項目中實作手勢擷取功能。現在,如果子項可拖曳項目放棄手勢,父項就有機會接手。這樣一來,手勢處理作業就能更連貫整合。(Ic88fe)
- 更新可捲動項目中的快速捲動取消行為。現在,如果可捲動的項目快速滑動並觸及邊界,系統會正確地將快速滑動速度傳遞至鏈結中的下一個可捲動項目,而不是繼續快速滑動。(I9326a)
1.8.0-alpha02 版
2024 年 9 月 18 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha02。1.8.0-alpha02 版包含這些修訂項目。
API 變更
- 現在提供 TextOverflow.StartEllipsis和TextOverflow.MiddleEllipsis,可將刪節號放在單行文字的行首或中間 (I38913、b/185418980)
1.8.0-alpha01 版
2024 年 9 月 4 日
發布 androidx.compose.foundation:foundation-*:1.8.0-alpha01。1.8.0-alpha01 版包含這些修訂項目。
1.7 版
1.7.8 版
2025 年 2 月 12 日
發布 androidx.compose.foundation:foundation-*:1.7.8。1.7.8 版包含這些修訂項目。
修正錯誤
- 修正在取代部分貼上文字時,BasicTextField輸入轉換功能會當機的問題。(I73702)
1.7.7 版
2025 年 1 月 29 日
發布 androidx.compose.foundation:foundation-*:1.7.7。1.7.7 版包含這些修訂項目。
修正錯誤
已知錯誤
- 我們發現一項錯誤,在 Android API 級別 35 的罕見情況下,可能會導致文字意外換行。這個問題無法在 1.7 中修正,因此我們會在 1.8 中修正。(b/391378120)
1.7.6 版
2024 年 12 月 11 日
發布 androidx.compose.foundation:foundation-*:1.7.6。1.7.6 版包含這些修訂項目。
修正錯誤
- 修正無障礙服務無法看到文字內嵌內容的問題。
- 修正在延遲清單中重複使用時,AndroidEmbeddedExternalSurface無法正確重設並卡住的問題。
1.7.5 版
2024 年 10 月 30 日
發布 androidx.compose.foundation:foundation-*:1.7.5。1.7.5 版包含這些修訂項目。
修正錯誤
- 請確保固定項目不會在內容邊框間距區域中重複子組合兩次。(Ic6224)
1.7.4 版
2024 年 10 月 16 日
發布 androidx.compose.foundation:foundation-*:1.7.4。1.7.4 版包含這些修訂項目。
修正錯誤
- 修正導致文字欄位偶爾會異常終止的錯誤。(I475c6、b/313010266)
- 已移除 Lazy 版面配置項目根層級的 ReusableContentHost。這可能是「在停用節點上呼叫的測量」導致當機的根本原因。(Id6e60)
1.7.3 版
2024 年 10 月 2 日
發布 androidx.compose.foundation:foundation-*:1.7.3。1.7.3 版包含這些修訂項目。
修正錯誤
- 修正 minLines 設為非預設值時,BasicText的記憶體流失問題。
1.7.2 版
2024 年 9 月 18 日
發布 androidx.compose.foundation:foundation-*:1.7.2。1.7.2 版包含這些修訂項目。
修正錯誤
- 修正可拖曳項目缺少向下事件的問題,這會導致快速滑動比平常慢。
1.7.1 版
2024 年 9 月 10 日
- Android 構件沒有任何變更。已移除 -desktop項構件,並新增-jvmStubs和-linuxx64Stubs項構件。這些目標都不會使用,只是用來輔助 Jetbrains Compose 的預留位置。
1.7.0 版
2024 年 9 月 4 日
發布 androidx.compose.foundation:foundation-*:1.7.0。1.7.0 版包含這些修訂項目。
自 1.6.0 版以來的重要變更
- Modifier.clickable、- Modifier.focusable、- Modifier.indication、- Modifier.scrollable和- Modifier.draggable的效能大幅提升。為此,我們除了進行內部變更,也做了下列 API 變更:- 新增了 Indication API IndicationNodeFactory。與先前的 (現已淘汰)rememberUpdatedInstanceAPI 相比,這項做法可提升 Indication 實作的效能。如需遷移資訊,請參閱 developer.android.com。
- clickable/- combinedClickable/- selectable/- toggleable現在接受可為空值的- MutableInteractionSource參數。如果為空值,且提供的 Indication 為- IndicationNodeFactory,則只有在需要時才能延遲建立 Indication,進而提升效能。如果您未提升並使用- MutableInteractionSource,建議傳遞 null,而非傳遞- remember { MutableInteractionSource() }。
- 淘汰了 Indication#rememberUpdatedInstance。這會造成無法避免的效能損失,並阻礙其他最佳化作業。請改用新的IndicationNodeFactoryAPI。
 
- 新增了 Indication API 
- BasicTextField使用- TextFieldState現在已穩定,建議所有呼叫網站開始從- BasicTextField(value, onValueChange)遷移至- BasicTextField(TextFieldState)。
- 「ClickableText」已淘汰。如要在文字中加入可點選的連結,請在AnnotatedString中使用BasicText和新的LinkAnnotation註解。LinkAnnotation可根據連結狀態 (例如已聚焦、已懸停) 自訂樣式。
- 隆重推出 ContextualFlowRow和Enhanced FlowRow/Column,搭配MaxLines和Overflow使用。很高興在此宣布,實驗性的FlowRow和FlowColumn現已支援maxLines和溢位,並推出ContextualFlowRow和ContextualFlowColumn。這項更新旨在提供最佳效能的元件,其中ContextualFlow*非常適合大量項目,可使用小型 maxLines 設定和動態 +N 顯示更多按鈕,而FlowRow和FlowColumn則非常適合少量項目 (少於 100 個項目)。重要事項:如要在FlowRow或FlowColumn中維持現有行為 (無論項目是否符合交叉軸上限,都會組成所有項目),請在初始化期間將溢位設為FlowRowOverflow.Visible或FlowColumnOverflow.Visible。如要查看這些新功能的實際應用情形,請參閱ContextualFlowRowSample和FlowRowSample。(Ib9135、b/293577082)
- LazyColumn和- LazyRow新增了項目顯示和消失動畫支援。先前可以新增- Modifier.animateItemPlacement()修飾符,支援放置 (重新排序) 動畫。我們已淘汰這個修飾符,並推出新的非實驗性修飾符- Modifier.animateItem(),可支援所有三種動畫類型:顯示 (淡入)、消失 (淡出) 和重新排序。(I2d7f7、b/150812265)
- 使用官方 Android API (ScrollCaptureCallback),在 Compose 捲動容器中實作實驗性支援,可擷取長截圖。
- NestedScroll來源「拖曳」和「快速滑動」將由- UserInput和- SideEffect取代,以因應這些來源的擴充定義,現在包括動畫 (副作用) 和滑鼠滾輪與鍵盤 (- UserInput)。
- LazyLayout預先擷取要求現在可以標示為緊急,這表示我們預期下一個影格會需要這個項目,並希望忽略影格預算,確保預先完成更多工作 (Id513f)
- 在 Android U 以上版本的裝置上支援觸控筆手寫功能。(I002e4)
- 多個 API 已升級為穩定版
- 分頁器、貼齊、視窗插邊
 
1.7.0-rc01 版
2024 年 8 月 21 日
發布 androidx.compose.foundation:foundation-*:1.7.0-rc01。1.7.0-rc01 版包含這些修訂項目。
修正錯誤
- 修正迴歸問題:如果可聚焦 (或可點擊) 的父項內有任何元素處於聚焦狀態,且該父項已停用,就會發生異常終止。(b/317561689)
1.7.0-beta07 版
2024 年 8 月 7 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta07。1.7.0-beta07 版包含這些修訂項目。
修正錯誤
- 現在,如果對唯讀 TextFields呼叫文字輸入相關的SemanticsNodeInteraction函式performTextReplacement、performTextInput和performTextClearance,系統就會擲回斷言錯誤。(I4ae8f)
- 修正超連結的視覺故障。(I23311)
- 修正 contentReceiver修飾符無法搭配部分輸入法編輯器使用的問題。
- 速度產生:防止 NaN 值在 Compose UI 和 Foundation 中傳播。
1.7.0-beta06 版
2024 年 7 月 24 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta06。1.7.0-beta06 版包含這些修訂項目。
1.7.0-beta05 版
2024 年 7 月 10 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta05。1.7.0-beta05 版包含這些修訂項目。
修正錯誤
- 修正 SnapFlingBehavior和 Pager 中 NaN 值的處理方式。
1.7.0-beta04 版
2024 年 6 月 26 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta04。1.7.0-beta04 版包含這些修訂項目。
修正錯誤
- 避免在測量極長的文字行 (例如 1 萬個字元) 時發生當機情形 (8157ab)
- 修正測量極大文字時,導致新版 BasicTextField異常終止的問題 (6b7575)
- 還原列/欄測量中的行為變更,避免在特定情境中導致文字使用中斷 (69e8ba)
1.7.0-beta03 版
2024 年 6 月 12 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta03。1.7.0-beta03 版包含這些修訂項目。
1.7.0-beta02 版
2024 年 5 月 29 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta02。1.7.0-beta02 版包含這些修訂項目。
API 變更
- 新增實驗性 API,用於設定 LazyGrids的預先擷取行為,與LazyLists的現有實驗性 API 類似。包括支援預先擷取巢狀LazyGrids中的項目。與LazyListPrefetchStrategy類似,實作預設值是預先擷取每個格線的前 2 個巢狀項目,但可透過新的LazyGridPrefetchStrategy(nestedPrefetchItemCount)和LazyListPrefetchStrategy#onNestedPrefetchAPI 進行設定。(I591c4)
- 已將 SemanticsProperties.Editable重新命名為IsEditable,並將SemanticsPropertyReceiver.editable變更為 valisEditable。這個屬性現在是布林值,且一律由文字欄位指定。(I8acd8)
- 已將 basicMarquee預設值移至MarqueeDefaults物件。(I12ff6)
- 已將 basicMarqueedelayMillis參數重新命名為repeatDelayMillis。(I12ff6)
- 更新 API,以便設定連結樣式:將 TextLinkStyles移至TextStyle,並從 Material 中移除TextDefaults(I5477b)
修正錯誤
- LayoutCoordinates.introducesFrameOfReference已重新命名為- LayoutCoordinates.introducesMotionFrameOfReference,以更能反映其用途。已重新命名相關函式,根據該旗標計算座標。(I3a330)
- 已從 MarqueeDefaults屬性中移除「預設」。(I1d8a0)
- 已從 MarqueeDefaults屬性中移除「Marquee」。(Iad4f4)
- 已從 TextStyle類別移除TextLinkStyles。TextLinkStyles屬於LinkAnntation建構函式和AnnotatedString.fromHtml方法 (I90b2b)
- 修正錯誤:Pager 在已停留在邊界時,若朝邊界快速滑動,就會自動對齊邊界。(I9f373、b/339171222)
- BTF2 現在可正確辨識滑鼠選取手勢。(Ibe8c6)
外部貢獻
- 重新提交「Make compose/measure time calculation content-type based in prefetch to improve accuracy」(Iea622)
- 根據預先擷取內容,以內容類型為準計算撰寫/測量時間,提高準確度 (Ibccb1)
- 從常見來源集提供 WindowInsetsPadding修飾符 (I070b2)
1.7.0-beta01 版
2024 年 5 月 14 日
發布 androidx.compose.foundation:foundation-*:1.7.0-beta01。1.7.0-beta01 版包含這些修訂項目。
API 變更
- 為確保二進位檔相容性,已將 KeyboardOptions.shouldShowKeyboardOnFocus屬性重新新增為已淘汰的隱藏屬性。(I15cfe)
- 在 RTL 版面配置中使用時,Modifier.anchoredDraggable現在會預設反轉具有水平方向的元件拖曳差異。(I3c6d9)
- AnnotatedString.hasEqualsAnnotations現在是- hasEqualAnnotations。(I685c0)
- 更新 API,以便在文字中取得 Material 主題連結。具體來說,我們從 TextDefaults中移除了建構主題式LinkAnnotations的方法,以及剖析含有主題式連結的 HTML。而是新增TextLinkStyles類別,可將連結樣式設為 Text 可組合項的參數。(I31b93)
- 以非暫停回呼取代 onDragStarted和onDragStopped。(I59de8)
修正錯誤
- 修正錯誤:當 contentPadding大於傳入的限制時,Pager 會異常終止。Pager 現在會將PageSize傳回的負值強制設為 0。(Iba5d8、b/314008560)
1.7.0-alpha08 版
2024 年 5 月 1 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha08。1.7.0-alpha08 版包含這些修訂項目。
新功能
API 變更
- LazyLayout預先擷取要求現在可以標示為緊急,這表示我們預期下一個影格會需要這個項目,並希望忽略影格預算,確保預先完成更多工作 (Id513f)
- isPositionedByParentWithDirectManipulation已重新命名為- introducesFrameOfReference。請注意,現在的效果相反,也就是說,預設情況下,大多數- LayoutCoordinates都會導入參照影格,只有在直接操控下,屬性才會為 false。如要查詢位置,且只查詢會引入參照架構的位置,請使用- positionInLocalFrameOfReference(...)。或從- LookaheadScope- positionInLocalLookaheadFrameOfReference。(Ifc5f7)
- 已將 LinkInteractionListener內的onClicked重新命名為onClick(Iaa35c)
- 根據 API 委員會的意見回饋,變更 getScrollViewportLength的動作 lambda。(Ibc74a)
- 重新命名觸控筆手寫委派 API。(Ica45f、b/327271923)
- 將 TextInclusionStrategy.isInside重新命名為isIncluded。將Paragraph/MultiParagraph#getRangeForRect()傳回型別設為不可為空值。(I51f26)
修正錯誤
- 在 SelectionContainer的所有文字內容選單中新增「全選」。(Ib750e、b/240143283)
- 修正使用 reverseScrolling=true擷取長截圖時,捲動容器的問題。(I7c59c)
- 修正 AnchoredDraggableState的currentValue在接近狀態界線時會變更的問題。(Iea30b、b/333846848)
外部貢獻
- 已將 PrefetchExecutor重新命名為PrefetchScheduler,以更貼切地反映其職責。(Ib9154)
- 新增支援功能,可在巢狀 LazyLists中預先擷取項目 (例如,可轉譯巢狀LazyRows的LazyColumn)。這項變更預期可減少這些LazyLists在捲動期間的影格掉格情形。實作預設會預先擷取前 2 個巢狀項目,但這項行為可透過新的LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)和LazyListPrefetchStrategy#onNestedPrefetchAPI 控制。(I51952)
1.7.0-alpha07 版
2024 年 4 月 17 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha07。1.7.0-alpha07 版包含這些修訂項目。
新功能
- 新增 TextDefaults物件,其中包含建構LinkAnnotation的方法,以及剖析套用MaterialTheme至連結的 HTML 標記字串。(I98532、b/139312671)
- LazyVerticalGrid和- LazyHorizontalGrid新增了項目顯示和消失動畫支援。先前可以新增- Modifier.animateItemPlacement()修飾符,支援放置 (重新排序) 動畫。我們已淘汰這個修飾符,並推出新的非實驗性修飾符- Modifier.animateItem(),可支援所有三種動畫類型:顯示 (淡入)、消失 (淡出) 和重新排序。(Ib7d12、b/330510929)
- LazyVerticalStaggeredGrid和- LazyHorizontalStaggeredGrid新增了項目顯示和消失動畫支援。先前可以新增- Modifier.animateItemPlacement()修飾符,支援放置 (重新排序) 動畫。我們已淘汰這個修飾符,並推出新的非實驗性修飾符- Modifier.animateItem(),可支援所有三種動畫類型:顯示 (淡入)、消失 (淡出) 和重新排序。(I69bc9、b/330511290)
API 變更
- 新增 ContextMenuColors和相關聯的LocalContextMenuThemeProvidableCompositionLocal。如要修改文字欄位和可選取文字的內容選單顏色,請提供組合區域。(Ifa154)
- 除了正常、懸停和焦點樣式,文字連結現在也提供按下狀態樣式選項。(I5f864、b/139312671)
- 推出手寫手勢專用的 ViewConfiguration.HandwritingGestureLineMargin。支援BasicTextField的手寫手勢。(Ie6e13、b/325660505)
- 由於我們沒有時間完成其餘相關 API 介面的穩定作業,因此已在 1.7 版中移除 DelegatableNode.scrollIntoView。這項函式將在 1.8 版重新推出 (I6cf61、b/333421581、b/332900232)
- 查詢版面配置座標時,您現在可以使用 excludeDirectManipulationOffset引數,排除父項版面配置使用Placeable.PlacementScope.withDirectManipulationPlacement放置子項時設定的位移。同樣地,如果 Layout 經常變更子項的位置,現在可能會使用withDirectManipulationPlacement(例如預設實作的 Scroll) 放置子項。這有助於approachLayout根據動畫更直觀地決定要為哪些位移套用動畫,以及在決定動畫方法時要直接套用哪些位移。(I60ec7)
- 推出 requestScrollToItem,適用於LazyStaggeredGrid。針對每個測量階段,用戶端現在可以呼叫requestScrollToItem,選擇不依據索引鍵維護索引。除非呼叫requestScrollToItem,否則這不會以任何方式變更現有行為。(I63983)
- 在 Pager 中導入 requestScrollToPage。針對每個測量階段,用戶端現在可以呼叫requestScrollToPage,選擇不依據索引鍵維護索引。除非呼叫requestScrollToPage,否則這不會以任何方式變更現有行為。(Ic4213)
- requestScrollToItem導入- LazyGrids。針對每個測量階段,用戶端現在可以呼叫- requestScrollToItem,選擇不依據索引鍵維護索引。除非呼叫- requestScrollToItem,否則這不會以任何方式變更現有行為。(I0a7a0)
- ClickableText已標示為已淘汰。如要在文字中新增連結,請建立- AnnotatedString,並使用對應連結的- LinkAnnotation,然後將這個- AnnotatedString傳遞至- Text可組合函式 (I34d4b、b/323346994)
- UrlAnnotation已淘汰,請改用- LinkAnnotation.Url。如果您使用 Material 主題設定,請使用- TextDefaults物件建立註解,並套用 Material 主題設定 (I8d180、b/323346545)
- String.parseAsHtml已重新命名為- AnnotatedString.Companion.fromHtml(I43dcd)
- 在 parseAsHtml方法中新增樣式引數 (linkStyle、focusedLinkStyle、hoveredLinkStyle) 和連結互動事件監聽器。使用<a>標記剖析含有 HTML 標記的字串時,這個方法會為每個這類標記建構LinkAnnotation.Url,並將樣式物件和連結互動事件監聽器傳遞至每個註解。(I7c977)
- LinkAnnotation現在會採用以狀態為準的樣式引數和- LinkInteractionListener。將這項註解新增至- AnnotatedString即可取得超連結。您可以傳遞- focusedState和/或- hoveredState,定義連結在焦點和/或懸停時的視覺設定。(I81ce4、b/139312671)
- 長截圖的功能旗標已移除。(I28648、b/329128246)
- LazyColumn現在會正確顯示長截圖中的固定標題。(I8d239、b/329296635)
- 穩定化大部分其餘實驗性 API,這些 API 是隨著新的 BasicTextField一併推出。(I714e2)
- 在 BasicSecureTextField中新增textObfuscationCharacter參數,可控制內容模糊處理時要使用的字元。(I0588b)
- NestedScroll來源 Drag 和 Fling 將由- UserInput和- SideEffect取代,以因應這些來源的擴充定義,現在包括動畫 (Side Effect) 和滑鼠滾輪與鍵盤 (- UserInput)。(I40579)
- 推出 LocalBringIntoViewSpec,這是平台專屬的焦點捲動行為,會在 Scrollable 修飾符層套用。(I27aa5、b/317453911)
- 已移除 TextFieldCharSequence。TextFieldBuffer.originalValues已改為TextFieldBuffer.originalText和TextFieldBuffer.originalSelection。(I2c7d6)
- ImeOptions.hintLocales不再可為空值。如要傳遞空白的語言代碼清單,請使用- LocaleList.Empty。(Ic5bc4)
- getOffsetFractionForPage已重新命名為- getOffsetDistanceInPages。(Ia05e2)
修正錯誤
- 當 InputTransformations與next合併時,現在會使用新的KeyboardOptions.merge方法,依據個別選項正確合併KeyboardOptions。(Ie5304、b/295951492)
- AnchoredDraggableState的- targetValue不再考量位置門檻。現在的隱含門檻為 50%,也就是說,- targetValue會在兩個錨點之間的中點變更。(I82c2c)
外部貢獻
- 重新命名 2 個捲動 API (I56a75)
1.7.0-alpha06 版
2024 年 4 月 3 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha06。1.7.0-alpha06 版包含這些修訂項目。
新功能
- LazyColumn和- LazyRow新增了項目顯示和消失動畫支援。先前可以新增- Modifier.animateItemPlacement()修飾符,支援放置 (重新排序) 動畫。我們已淘汰這個修飾符,並推出新的非實驗性修飾符- Modifier.animateItem(),可支援所有三種動畫類型:顯示 (淡入)、消失 (淡出) 和重新排序。(I2d7f7、b/150812265)
- LazyColumn/LazyRow的用戶現在可以呼叫非暫停的- LazyListState.requestToScroll,選擇不根據即將推出的評估傳遞功能金鑰維護索引。(I98036、b/209652366)
- 新增樣式字串的 parseAsHtml方法:可將標記 HTML 標記的字串轉換為AnnotatedString。請注意,系統目前僅支援部分標記,例如無法顯示項目符號清單。(I84d3d)
- 使用官方 Android API (ScrollCaptureCallback),在 Compose 捲動容器中實作實驗性長截圖支援功能。這項功能仍在實驗階段,目前可能無法正確處理所有情況。因此目前預設為停用。如要選擇啟用這項功能,請將ComposeFeatureFlag_LongScreenshotsEnabled標記設為 true。這項標記會在 1.7 Beta 版發布前移除。(I2b055、b/329296471)
- 推出新的 GraphicsLayerAPI,在放置和算繪GraphicsLayer執行個體時提供更多彈性,並支援內建算繪功能,不必與可組合項實作項目協調,即可指定GraphicsLayer修飾符執行個體。
API 變更
- 所有 KeyboardOptions參數現在預設都有未指定的值。新增KeyboardOptions.merge方法。
- 已將 KeyboardOptions.autoCorrect重新命名為autoCorrectEnabled,並將該值設為可為空值,空值表示未指定任何值。(Ia8ba0、b/295951492)
- outOfBoundsPageCount已重新命名為- beyondViewportPageCount。(I129c6)
- fun ClipEntry.getMetadata()已變更為- val ClipEntry.clipMetadata。(I50155)
- 已移除 TextFieldState.valueAsFlow()。建議使用snapshotFlow { state.text }或snapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629)
- 已重新整理 InputTransformation.transformInput參數。已移除「originalValue: TextFieldCharSequence」。現在TextFieldBuffer會改為攜帶這個值,且名稱相同。同時也移除了valueWithChanges: TextFieldBuffer參數。TextFieldBuffer現在是函式的接收器範圍。(I919cc)
- BasicTextField(state)變數和- BasicSecureTextField現在會使用- KeyboardActionHandler,而不是- KeyboardActions來處理軟體鍵盤執行的動作。(I58dda)
- 觸控筆手寫委派 API,支援在「虛擬」文字輸入欄位中使用觸控筆手寫。(I9c09c、b/327271923)
- KeyboardOptions.shouldShowKeyboardOnFocus已重新命名為- showKeyboardOnFocus。(Ib4b7a、b/295951492)
- 已從 Modifier.contentReceiver中移除hintMediaTypes參數。我們已鼓勵開發人員檢查收到的TransferableContent媒體類型,因為這可能與設定的hintMediaTypes不相容。(I82f99)
- 已將 BasicSecureTextField的參數重新排序。已移除keyboardType和imeAction參數,改用完整的KeyboardOptions類別,同時保留適用於BasicSecureTextField的預設值。同時也移除了scrollState參數。(Ibbfa9)
- TextFieldState.text的類型已從- TextFieldCharSequence變更為- CharSequence。因此,我們新增了- TextFieldState.selection: TextRange和- TextFieldState.composition: TextRange?,直接從狀態物件讀取目前的選取項目和組合值。
- 已移除 TextFieldState.forEachTextValue。(Idb2a2)
- 移除了 ClipboardManager.getClipMetadata和ClipboardManager.hasClip函式。請使用clipEntry.getMetadata()讀取目前剪輯片段項目的中繼資料。此外,請檢查ClipboardManager.getClip的結果是否為空值,瞭解剪貼簿是否有目前的剪輯片段。(I50498)
- ClipboardManager.setClip現在可接受空值,以便清除剪貼簿。(I7d2e9)
- ReceiveContentListener轉換為函式介面。此外,由於- ReceiveContentListener現在是函式介面,因此也移除了採用 lambda 的- Modifier.receiveContent超載。
- Modifier.receiveContent已重新命名為- Modifier.contentReceiver。(I1e6af)
- TransferableContent.consumeEach已重新命名為- TransferableContent.consume。(I1e462)
- rememberTextFieldState已升級為穩定版 API。(I37999)
修正錯誤
- 修正 BasicTextField(state)變體無法搭配 CJK(以組合為基礎) 鍵盤運作的錯誤。(I54425)
- 修正錯誤:在某些情況下,Modifier.dragAndDropTarget()可能會參考Modifier.Node重複使用的過時資料。(I05bb1)
- 還原最近的合約變更,AnchoredDraggableState#anchoredDrag呼叫會在anchoredDrag作業結束時中斷。(I95715)
1.7.0-alpha05 版
March 20, 2024
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha05。1.7.0-alpha05 版包含這些修訂項目。
API 變更
- 移除了用於設定超連結樣式的實驗性 LocalTextLinkStyle組合本機項目。(Iebfa7)
- 移除了 BasicText的實驗性覆寫,並使用onLinkClicked引數。日後將推出支援超連結的替代 API。(I107d5)
- 移除了 TextFieldState和TextFieldBuffer下的 Codepoints 相關方法和屬性。此外,我們也從其餘選取和組合相關 API 中移除了inChars後置字元。(Ief7ce)
- AnchoredDraggable的- currentValue現在會在通過錨點時更新。使用- settledValue接收先前的- currentValue語意,只在錨點結算時更新。進度現在會以函式 (需要起點和終點) 的形式公開,而非屬性。(Ibe6e8、b/318707189、b/298271489、b/294991954)
- BasicTextField(state)、- TextFieldState、- InputTransformation、- OutputTransformation、- TextFieldLineLimits、- TextFieldDecorator已升級為穩定版。(I9582b)
- 導入 InterceptPlatformTextInput,協助撰寫低層級 IME 相關測試和其他低層級 IME 用途。PlatformTextInputTestOverride已淘汰。(I862ed、b/322680547)
- 將 restrictedConstraints()分割成兩個方法:fitPrioritizingWidth()和fitPrioritizingHeight()(I6d7fd)
外部貢獻
- 新增 2 個 API isLastScrollForward/isLastScrollBackward,可檢查最新捲動動作的捲動方向,如果尚未有捲動動作,則會傳回 false。(I63a0e)
1.7.0-alpha04 版
2024 年 3 月 6 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha04。1.7.0-alpha04 版包含這些修訂項目。
API 變更
- 在 Android U 以上版本的裝置上支援觸控筆手寫功能。(I002e4)
- 新增 hintLocales至KeyboardOptions,讓TextFields能夠提示 IME 使用特定語言代碼預設偏好語言。(Id18c2)
- 移除了採用 value: String和onValueChange: () -> String參數的實驗性BasicTextField2和BasicSecureTextField超載。(I568b4)
- 在 InputTransformation中新增選用的applySemantics函式,影響套用至BasicTextField2的BasicTextField2語意。(I74a2f、b/170648072)
- 在這個 CL 中,我們新增了 GetScrollViewportLength語意動作,因此可以將 Compose 中捲動的元件相關資訊傳送至無障礙系統。這個 CL 也會在 Foundation 可捲動清單中套用上述屬性。(Ic5fa2)
- BasicTextField2已重新命名為- BasicTextField。(Ie5713)
- FocusRequester.createRefs現在是穩定版 (I4d92c、b/261436820)
- 導入 DelegatableNode.scrollIntoView(),允許修飾符節點直接提出scrollIntoView要求。(I2b3b7、b/299939840)
- 推出 DelegatableNode.requireView(),讓修飾符節點可取得目前的 AndroidView,而不需讀取本機組合。(I40768)
- 在「Contextual Flow Row Scope」和「Contextual Flow Column Scope」中導入背景資訊版面配置資訊,包括行索引、位置,以及最大寬度和高度的限制,以維持在指定位置。如果項目超出寬度/高度上限,可能會根據溢位設定流動到下一行或遭到省略。(Id13f8、b/292114798)
修正錯誤
- 修正錯誤:在特定條件下,切換 TextField的enabled或readOnly屬性會導致當機。(Iae17b)
1.7.0-alpha03 版
2024 年 2 月 21 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha03。1.7.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- 導入 DelegatableNode.requireLayoutCoordinates(),可取得Modifier.Node的目前LayoutCoordinates,不必覆寫onPlaced並自行將座標儲存在屬性中。(Ia8657)
- 導入 DelegatableNode.currentLayoutCoordinates,可取得Modifier.Node的目前LayoutCoordinates,不必覆寫onPlaced並自行將座標儲存在屬性中。(Iaebaa)
- DraggableAnchors中使用的成效最佳化功能。- AnchoredDraggable(I89cff)
- BasicTextField2和- androidx.compose.foundation.text2套件下的相關 API 已移至- androidx.compose.foundation.text。(I9f635)
- BasicTextField2不再接受- CodepointTransformation參數。使用- BasicSecureTextField或- OutputTransformation。(Id34ff)
- 新增方法,僅比較兩個 AnnotatedStrings的註解。(I32659)
- 隆重推出 ContextualFlowRow,以及強化版FlowRow/Column,並支援MaxLines和Overflow。很高興在此宣布,實驗性的FlowRow和FlowColumn現已支援maxLines和溢位,並推出ContextualFlowRow和ContextualFlowColumn。這項更新旨在提供最佳效能的元件,其中ContextualFlow*非常適合大量項目,可使用小型maxLines設定和動態 +N 查看更多按鈕,而FlowRow和FlowColumn則非常適合少量項目 (少於 100 個項目)。重要事項:如要在FlowRow或FlowColumn中維持現有行為,無論項目是否符合交叉軸上限,都會組成所有項目,請在初始化期間將overflow設為FlowRowOverflow.Visible或FlowColumnOverflow.Visible。如要查看這些新功能的實際應用情形,請參閱ContextualFlowRowSample和FlowRowSample。(Ib9135、b/293577082)
修正錯誤
1.7.0-alpha02 版
2024 年 2 月 7 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha02。1.7.0-alpha02 版包含以下修訂項目。
API 變更
- HorizontalPager、- VerticalPager和- PagerState已升級為穩定版。(I67660、b/316966909)
- 新增 LocalTextLinkStyle合成區域,可變更應用程式中「文字」的連結樣式。如果您在應用程式中使用自己的主題,就應根據主題設定這個合成區域。使用 Material Design 主題時,連結顏色預設會設為 Material Design 的主要顏色。(I7eb10)
- 導入 receiveContent修飾符,讓開發人員能在 Jetpack Compose 中接收多媒體內容。
- receiveContent會與- BasicTextField2整合,接受軟體鍵盤或剪貼簿貼上動作提供的多媒體內容。(I81b72)
- 在這項異動中,我們將分頁器中的 SnapFlingBehavior替換為TargetedFlingBehavior,以解鎖其他用途並提供更大的彈性。(I762ea)
- 這項異動是為了將 Snapping API 設為穩定版。我們也清理了一些測試程式碼,並在 Snapping 中新增更多範例。(Id8da9)
- 推出 TargetedFlingBehavior,這項FlingBehavior可傳播有關進行中動畫狀態和目標捲動偏移的資訊。(I6a207)
修正錯誤
- 現在,如果 BasicTextField2捲動出檢視畫面,或因輸入內容而移出檢視畫面,系統會在輸入時將游標保留在檢視畫面中。(Ieb856、b/237190748)
外部貢獻
- 新增實驗性 API,用於設定 LazyList 的預先擷取行為。(I022a4)
1.7.0-alpha01 版
2024 年 1 月 24 日
發布 androidx.compose.foundation:foundation-*:1.7.0-alpha01。1.7.0-alpha01 版包含此連結所列的修訂項目。
新功能
- 新增了 Indication APIIndicationNodeFactory。與先前的 (現已淘汰)rememberUpdatedInstanceAPI 相比,這可讓Indication實作項目效能更高。如需遷移資訊,請參閱 developer.android.com。
- clickable / combinedClickable / selectable / toggleable現在可接受可為空值的- MutableInteractionSource參數。如果為空值,且提供的- Indication是- IndicationNodeFactory,則只有在需要時才能延遲建立- Indication,這有助於提升效能。如果您未提升並使用- MutableInteractionSource,建議傳遞空值。
API 變更
- 在 AnchoredDraggable中導入DecayAnimation,這項變更會將decayAnimationSpec參數新增至AnchoredDraggable,以便在錨點之間移動時使用衰減動畫。此外,我們也將現有的animationSpec重新命名為snapAnimationSpec,方便您瞭解各規格的用途。
- BasicTextField2可供實驗使用。這個版本應與- BasicTextField的功能大致相同,且行為應已準備好用於正式環境。不過,API 目前仍處於實驗階段。穩定後,這個函式會重新命名為- BasicTextField,並移至相同套件。
- 推出 BasicTextField2的OutputTransformationAPI 第一個草稿。這個 API 會取代舊版BasicTextField中VisualTransformation的大部分用途。不過,這項 API 尚未完成,部分功能可能無法正常運作,但我們很希望您能針對 API 在您使用案例中的可用性提供意見。(aosp/2708848)
- 推出 LinkAnnotation,可在文字中加入連結和可點選項目。連結功能尚未完成,我們將推出更多 API 變更。
- 導入 receiveContent修飾符,讓開發人員能在 Jetpack Compose 中接收多媒體內容。
- receiveContent會與- BasicTextField2整合,接受軟體鍵盤提供的多媒體內容,或透過剪貼簿貼上內容。
- KeyboardOptions.shouldShowKeyboardOnFocus可讓您停用- BasicTextField的預設行為,即在焦點上要求軟體鍵盤。
- TextInputService和- LocalTextInputService現已淘汰。請改用- PlatformTextInputModifierNode直接與平台 IME API 整合。(aosp/2862698)
- 淘汰了 Indication#rememberUpdatedInstance。這會造成無法避免的效能損失,並阻礙其他最佳化作業。請改用新的IndicationNodeFactoryAPI。
修正錯誤
- 現在傳遞 VisualTransformation時,BasicTextField會預先驗證一小部分偏移對應。這有助於找出常見的程式碼錯誤,避免在後續的測量或繪製階段發生無法復原的例外狀況。在組合期間擲回錯誤,開發人員就更有可能在開發期間發現這些錯誤,進而避免發生生產當機問題。(I0fd42)
- 如果為無效索引傳回無效索引,VisualTransformation不會擲回例外狀況 (b/316401857 )
1.6 版本
1.6.8 版
2024 年 6 月 12 日
發布 androidx.compose.foundation:foundation-*:1.6.8。1.6.8 版包含這些修訂項目。
1.6.7 版
2024 年 5 月 1 日
發布 androidx.compose.foundation:foundation-*:1.6.7。1.6.7 版包含這些修訂項目。
1.6.6 版
2024 年 4 月 17 日
發布 androidx.compose.foundation:foundation-*:1.6.6。1.6.6 版包含這些修訂項目。
修正錯誤
- 修正錯誤:在特定條件下,切換 TextField的enabled或readOnly屬性會導致當機。(Iae17b)
1.6.5 版
2024 年 4 月 3 日
發布 androidx.compose.foundation:foundation-*:1.6.5。1.6.5 版包含這些修訂項目。
修正錯誤
- 針對 Row/Column 中難以重現的錯誤新增偵錯記錄:(b/300280216 和 b/297974033)
1.6.4 版
March 20, 2024
發布 androidx.compose.foundation:foundation-*:1.6.4。1.6.4 版包含這些修訂項目。
修正錯誤
- 如果長按並拖曳選取的手勢在拖曳的第一個影格中移出文字的版面配置界限,系統不會再當機。(Icdf90、b/325307463)
1.6.3 版
2024 年 3 月 6 日
發布 androidx.compose.foundation:foundation-*:1.6.3。1.6.3 版包含這些修訂項目。
1.6.2 版
2024 年 2 月 21 日
發布 androidx.compose.foundation:foundation-*:1.6.2。1.6.2 版包含以下修訂項目。
修正錯誤
- 修正 AnimateContentSize無法正確重設的問題。(I07051)
- 修正在某些情況下,intrinsicHeight的文字會過度快取的問題。(3cd398、b/217910352)
1.6.1 版
2024 年 2 月 7 日
發布 androidx.compose.foundation:foundation-*:1.6.1。1.6.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正捲動超過限制時的交錯格線測量問題。(bffc39)
- 新增檢查,確認版面配置是否具有較大的尺寸。(e74af5)
- 修正交錯格線開頭的 0 大小項目放置位置。(785f94)
- 按照 onForgotten 的順序呼叫 onRelease 回呼。(31ce3b)
1.6.0 版
2024 年 1 月 24 日
發布 androidx.compose.foundation:foundation-*:1.6.0。1.6.0 版包含以下修訂項目。
自 1.5.0 版以來的重要變更
- 全新修飾符 Modifier.anchoredDraggable:可解鎖在預先定義的錨點之間拖曳及製作動畫的功能。這個修飾符是用來取代Modifier.swipeable。請參閱遷移指南,瞭解如何使用及從Modifier.swipeable遷移。
- 新增應用程式和元件之間的拖曳功能。請參閱 DragAndDropTarget、Modifier.dragAndDropSource和其他 API,開始使用
- Modifier.draggable2D是新的修飾符,可輕鬆支援 2D 拖曳。請參閱範例。
- 新增 AndroidExternalSurface和AndroidEmbeddedExternalSurface,方便在 Compose 中新增以介面為基礎的元件
- Pager和- snapFlingBehaviour中的多項 API 變更和改善項目
- 多個焦點、文字和插邊 API 已升級為穩定版 API
1.6.0-rc01 版
2024 年 1 月 10 日
發布 androidx.compose.foundation:foundation-*:1.6.0-rc01。1.6.0-rc01 版包含以下修訂項目。
API 變更
- 已移除 DragAndDropTarget()擴充功能建構函式。使用object: DragAndDropTarget {}建立新的執行個體。(I32318)
1.6.0-beta03 版
2023 年 12 月 13 日
發布 androidx.compose.foundation:foundation-*:1.6.0-beta03。1.6.0-beta03 版包含以下修訂項目。
修正錯誤
- 修正以無限限制測量極大文字時發生的異常終止問題。(I1a7df、b/312294386)
- PlatformImeOptions現在是具體類別,而不是介面。(If40a4)
1.6.0-beta02 版
2023 年 11 月 29 日
發布 androidx.compose.foundation:foundation-*:1.6.0-beta02。1.6.0-beta02 版包含以下修訂項目。
修正錯誤
- 修正僅重新配置捲動後,canScroll未更新的問題。(I60a86)
- 修正小幅捲動後 Modifier.animateItemPlacement()和LookaheadScope的問題。(I3a2b7)
1.6.0-beta01 版
2023 年 11 月 15 日
發布 androidx.compose.foundation:foundation-*:1.6.0-beta01。1.6.0-beta01 版包含以下修訂項目。
API 變更
- DragAndDropTarget修飾符現在會明確接收- DragAndDropTarget,並提供 lambda 來選擇加入拖曳工作階段。現在有兩個- DragAndDropModifierNode的工廠函式。一個用於接收轉移內容,另一個用於轉移資料 (I69481)
- 已將 maximumFlingVelocity更新為以 Float 表示。更新說明文件,更清楚說明maximumFlingVelocity統一性。(I8adc7)
- DragAndDropModifierNode工廠中的- onDragAndDropStart已重新命名為- acceptDragAndDropTransfer。- acceptsDragAndDropTransfer已新增至- dragAndDropTarget- Modifier,可從拖曳工作階段接受。如果您對拖曳工作階段感興趣,這個 lambda 會傳回可行的- DragAndDropTarget。其他用於處理拖曳事件的 Lambda 已由這個函式取代。- 新增 - DragAndDropTarget工廠函式,可接收拖曳作業的資料 (Iebf3a)
- 在 - AnchoredDraggable中公開- startDragImmediately,即可在使用時偵測拖曳手勢。當小工具動畫要移至目標錨點時,設定這項屬性會很有用。請參閱範例。(Ie6d13、b/285139987)
- Foundation Tooltip API 現在為 - @ExperimentalFoundationApi(I30b0b)
- 已移除 - DragAndDropInfo做為型別- DragAndDropModifierNode.drag,現在會採用- transferData、裝飾大小和拖曳裝飾- DrawScopelambda 的參數- DragAndDropTarget具有特定拖曳事件的方法,而非單一抽象方法- 工廠函式中的 - onDragAndDropEvent已重新命名為- onDragAndDropStart,以便更清楚地傳達所提供的- DragAndDropTarget僅適用於特定拖曳工作階段- DragAndDropModifierNode- 已移除 - DragAndDropEventType(I645b1)
- PlatformTextInputModifierNode.runTextInputSession已重新命名為- establishTextInputSession。(I03cd0)
- 以 - TextSubstitution取代- OriginalText。(Ifa5a8)
- PlatformTextInputModifierNode.textInputSession已重新命名為- runTextInputSession。(Ie9c6b)
- 系統會將保留下來供日後重複使用的 - SubcomposeLayout子項 (以及以其為基礎的- LazyColumn等版面配置) 視為已停用。我們推出了新的- assertIsDeactivated()測試 API,用於測試這類節點。其餘測試 API 預設會篩除已停用的節點。(I2ef84、b/187188981)
- Modifier.magnifier的- clippingEnabled參數已重新命名為- clip。
- Modifier.magnifier的- magnifierCenter參數已設為可為空值,但預設行為不變。(I6aa66)
- Material - SwipeToRevealAPI (適用於資訊卡和晶片) 現在會依據以插槽為基礎的 API (Compose 建議使用) 建立插槽,而非以資料類別為基礎的例項。這項變更會造成中斷,如需如何使用新版 API 的範例,請參閱示範和程式碼範例。(Ia8943)
修正錯誤
- 為 PageSize.Fixed實作等號和雜湊碼。(Ie3ede、b/300134276)
- 修正錯誤:當 minWidth變更且minWidth小於初始測量限制maxWidth時,導致BasicText版面配置不會縮小 (Idb19c)
- 在 ArcLine中新增掃描漸層的算繪器支援功能。(I4d5bb)
- 修正 Window Inset 變更的二進位檔相容性問題 (Iee695)
- 移除 Material3 晶片/按鈕的 Material 核心層,因為微基準測試顯示,移除後效能會更好。(I55555)
1.6.0-alpha08 版
2023 年 10 月 18 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha08。1.6.0-alpha08 版包含以下修訂項目。
新功能
- Modifier.draggable2D是新的修飾符,可輕鬆支援 2D 拖曳。請參閱「範例」(Id95f5、b/214412658)
API 變更
- Modifier.dragAndDrawSource的- onDrawDragShadowlambda 已重新命名為- drawDragDecoration,而- DragAndDropInfo的大小參數已重新命名為- dragDecorationSize。(Id0e30、b/303904810)
- BasicTextField2的- decorationBox參數已重新命名為- decorator。類型也會變更為對等的函式介面- TextFieldDecorator。(I23c1c)
修正錯誤
- 改善 BasicTextField的說明文件,說明onValueChange規定。(I90fc9、b/160257648)
1.6.0-alpha07 版
2023 年 10 月 4 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha07。1.6.0-alpha07 版包含此連結所列的修訂項目。
API 變更
- 推出 PlatformTextInputMethodTestOverride,可為自訂文字編輯器編寫測試。(Id159b)
- 已將 GraphicsSurface重新命名為AndroidExternalSurface(I11680)
- 新增 DisableNonLinearFontScalingInCompose暫時性標記,停用非線性字型縮放功能。如需時間清理這些項目,請在測試中設定DisableNonLinearFontScalingInCompose = true。這項標記將在 Compose 1.6.0-beta01 中移除。(Ic9486)
- 新增可避免分配的 ColorList和ColorSet集合。(I744bd)
- 這項變更會移除 shortSnapVelocityThreshold,因為shortSnapVelocityThreshold已成為SnapLayoutInfoProvider實作項目的實作詳細資料。(I65f6d)
- 新增 dragAndDropSource修飾符,用於啟動拖曳工作階段;新增dragAndDropTarget修飾符,用於接收拖曳工作階段的內容 (Ib7828、b/286038936)
- 更新 SnapPositionInLayout說明文件和位置方法。在SnapPositionInLayout的位置方法中導入內容邊框間距。(Id7938、b/300116110)
- 新增 UndoState至TextFieldState,可供使用者復原/重做變更。(Icc024)
修正錯誤
- 修正了 basicMarquee在速度變更後不會產生動畫的問題。(Id2e77、b/297974036)
1.6.0-alpha06 版
2023 年 9 月 20 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha06。1.6.0-alpha06 版包含以下修訂項目。
新功能
- SurfaceView、- TextureView: GraphicsSurface()和- EmbeddedGraphicsSurface()的全新可組合包裝函式。這是實驗性質的 API,可能會變更或修改。(I9ddb2)
- Modifier.magnifier()現在是穩定版 API。包括移除- MagnifierStyle,改用修飾符本身的內嵌參數。(I83bec、b/298381260、b/262367109、b/261438887)
API 變更
- 在 ScrollScope中導入updateCurrentPage和updateTargetPage,這是最後一項必要功能,可讓您透過PagerState.scroll自訂動畫捲動效果。(I9cad5、b/267744105、b/243786897)
- 從 SnapFlingBehavior移除密度。所有SnapLayoutInfoProvider的實作項目都已提供存取密度的途徑,因此可以移除接收器範圍,進而簡化SnapFlingBehavior和SnapLayoutInfoProviders的實作項目。(I153c3)
- 更多修飾符標示為穩定。(I56af1、b/298046462)
- 已從「SnapLayoutInfoProvider」中移除「SnapStepSize」。計算時應使用版面配置資訊,並透過方法或對齊偏移量提供。(If320c)
行為變更
- Compose 現在使用非線性字型縮放功能,提升可讀性和無障礙程度。如果系統設定中的字型縮放比例大於 100%,小型文字會正常放大,但大型文字只會稍微放大。此外,SP 中定義的行高會自動調整,與 100% 比例的預期高度保持比例。詳情請參閱「字型縮放最佳做法」(I11518)。
修正錯誤
- 移除工具提示的 rememberSaveable用法。(Icc131、b/299500338)
1.6.0-alpha05 版
2023 年 9 月 6 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha05。1.6.0-alpha05 版包含此連結所列的修訂項目。
API 變更
- 為 BasicSecureTextField新增多載,接受不可變動的值和回呼來變更該值,就像目前的BasicTextFieldAPI 一樣。(Ia4882)
- 新增 Modifier.preferKeepClear(),將可組合函式標示為偏好在 API 33 以上版本中避開浮動視窗。(Ib51d5、b/297260115)
- ScrollView和- RecyclerView等 View 元件的 Fling 速度上限為- ViewConfiguration.ScaledMaximumFlingVelocity。Compose 現在包含自己的- maximumFlingVelocity版本,適用於- Draggable。(Ibf974)
- 已移除已淘汰的 Pager和PagerState超載。(Iea07e)
- 在 compose.foundation中新增BasicTooltipBox,並更新PlainTooltipBox和RichTooltipBox,以搭配新的PlainTooltip和RichTooltip可組合函式使用TooltipBox。(I79e1d)
1.6.0-alpha04 版本
2023 年 8 月 23 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha04。1.6.0-alpha04 版本包含以下修訂版本。
API 變更
- 新增 ReusableComposition介面,用於管理子組合的生命週期和重複使用。(I812d1、b/252846775)
- Modifier.focusGroup已升級為穩定版 API。(I7ffa3)
- 為 BasicTextField2新增多載,接受不可變動的值和回呼來變更該值,就像目前的BasicTextFieldAPI 一樣。(I3f2b8)
- GridItemSpan::currentLineSpan現在是穩定版 API。(Icc29c)
- 接受 contentDescription的 Canvas 現在是穩定版 API。(Ib3d29)
- 在 ScrollState中導入viewportSize,以便在測量完成後,瞭解使用ScrollState的元件viewPort大小。(I8b85a、b/283102682)
- 修正 Pager 中的預先擷取行為與 Views 不符的問題。(I93352、b/289088847)
- Modifier.consumeWindowInsets(PaddingValues)現已穩定。- Deprecated Modifier.consumedWindowInsetsAPI 現已移除。請改用- Modifier.consumeWindowInsets。(Id72bb)
 
1.6.0-alpha03 版本
2023 年 8 月 9 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha03。1.6.0-alpha03 版包含以下修訂項目。
API 變更
- 新增 LazyLayout的多載,現在接受LazyLayoutItemProvider的 lambda,而非先前的純物件。先前的多載已淘汰。(I42a5a)
- 新增了設定 privateImeOptions的支援 (Idb772)
修正錯誤
- 修正文字欄位在 readOnly為 true 時顯示鍵盤並可編輯的問題。此外,也修正了當焦點從 true 變更為 false 時,鍵盤不會顯示的問題。readOnly(I34a19、b/246909589)
1.6.0-alpha02 版本
2023 年 7 月 26 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha02。1.6.0-alpha02 版包含以下修訂項目。
API 變更
- 導入 PagerLayoutInfo,其中包含在Pager中通過評估後收集的資訊。此外,我們也推出了PageInfo,也就是Pager中單一評估網頁的相關資訊。(Iad003、b/283098900)
- 新增註解,指定可組合函式的允許輸入內容 (I51109)
- 新增 SemanticsNodeInteraction.requestFocus,讓您在測試中要求焦點時更方便,也更容易找到。(Ie8722)
- 全面重新設計 PlatformTextInput*API。(I6c93a、b/274661182、b/267235947、b/277380808)
- SoftwareKeyboardController及- LocalSoftwareKeyboardController不再是實驗版,- LocalSoftwareKeyboardController現在也是適當的- CompositionLocal。(I4c364)
- Modifier.transformable現在會在- canPan參數中提供平移增量,協助判斷平移方向,以允許或禁止平移。(I692aa、b/266829800)
- 更新修飾符 consumeWindowInsets,以擴充父類別AbstractComposeView(Iacd74、b/269479941)
1.6.0-alpha01 版本
2023 年 6 月 21 日
發布 androidx.compose.foundation:foundation-*:1.6.0-alpha01。1.6.0-alpha01 版包含此連結所列的修訂項目。
新功能
- 在 Foundation 中導入新的 AnchoredDraggableAPI。可用於建構可在不同狀態之間拖曳的元件,例如模式底部功能表。這個 API 會取代 Material 的SwipeableAPI。(I4a2ed)
API 變更
- 支援 InputConnection#requestCursorUpdates(I0c69b)
- 推出 scrollAnimationSpec,可自訂動畫規格。「BringIntoViewCalculator」已更新為「BringIntoViewScroller」。(Idb741)
- 新增 ResourceResolutionException型別,包裝嘗試載入點陣圖資產時擲回的可拋出項目,並說明無法載入的資產路徑。(I19f44、b/230166331、b/278424788)
- 新增語意屬性和動作,支援文字翻譯。(I4a6bc)
- 推出 BringIntoViewCalculatorAPI,可用於自訂Scrollable等元件回應bringIntoView要求的方式。變更可捲動的多載,選擇性接受BringIntoViewCalculator的例項。(Iaf5af)
修正錯誤
- 新增 Lint 檢查,如果是在組合中建立 MutableInteractionSource但忘記記住,就會發出警告,類似於建立可變動狀態 /Animatable的 Lint 檢查。(I5daae)
- 新增滑鼠選取支援。以觸控方式選取文字時,選取範圍會以字詞為單位擴大,並以字元為單位縮小。(Ic0c6c、b/180639271)
- 新增 FocusTargetModifierNode介面,可用於建立自訂FocusTarget。(I9790e)
1.5 版本
1.5.4 版本
2023 年 10 月 18 日
發布 androidx.compose.foundation:foundation-*:1.5.4。1.5.4 版包含以下修訂項目。
1.5.3 版本
2023 年 10 月 4 日
發布 androidx.compose.foundation:foundation-*:1.5.3。這個版本沒有任何變更。
1.5.2 版本
2023 年 9 月 27 日
發布 androidx.compose.foundation:foundation-*:1.5.2。1.5.2 版包含以下修訂項目。
修正錯誤
- 修正文字中的錯誤,避免在語意失效時導致當機。
1.5.1 版本
2023 年 9 月 6 日
發布 androidx.compose.foundation:foundation-*:1.5.1。1.5.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正文字欄位在 readOnly為 true 時顯示鍵盤並可編輯的問題。此外,也修正了當焦點從 true 變更為 false 時,鍵盤不會顯示的問題。readOnly(I34a19、b/246909589)
1.5.0 版本
2023 年 8 月 9 日
發布 androidx.compose.foundation:foundation-*:1.5.0。1.5.0 版包含此連結所列的修訂項目。
自 1.4.0 版以來的重要異動
- 許多基礎修飾符 (包括 Modifier.clickable、Modifier.draggable、Modifier.scrollable、版面配置修飾符等) 已遷移至Modifier.NodeAPI,減少初始組合的負擔。
- 提升 Pager 的穩定性。修正多項錯誤。
- pageCount參數現在位於- PagerState中,而非 Pager 本身
1.5.0-rc01 版
2023 年 7 月 26 日
發布 androidx.compose.foundation:foundation-*:1.5.0-rc01。1.5.0-rc01 版包含此連結所列的修訂項目。
修正錯誤
- 您也可以選擇進行檢查,系統會建議將 - mutableStateOf()呼叫遷移至對應的原始型別專用型別。其 Lint ID 為- AutoboxingStateCreation。先前,這項檢查功能預設會為所有專案啟用。如要在 Android Studio 編輯器和專案的 Lint 輸出內容中查看這項警告,請在模組的- build.gradle或- build.gradle.kts設定中宣告- warning "AutoboxingStateCreation",將嚴重程度從資訊變更為警告 (或更高),如下所示 (I34f7e):- android { lint { warning "AutoboxingStateCreation" } ... }
1.5.0-beta03 版
2023 年 6 月 28 日
發布 androidx.compose.foundation:foundation-*:1.5.0-beta03。1.5.0-beta03 版包含以下修訂項目。
1.5.0-beta02 版
2023 年 6 月 7 日
發布 androidx.compose.foundation:foundation-*:1.5.0-beta02。1.5.0-beta02 版包含以下修訂項目。
1.5.0-beta01 版
2023 年 5 月 24 日
發布 androidx.compose.foundation:foundation-*:1.5.0-beta01。1.5.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 實作 PlatformDataProvider,提供心率和每日步數。已從公開 API 移除SensorGateway介面。(I55b84)
修正錯誤
- 在延遲清單/格線/等測量期間減少分配 (Iaf9e2)
- 套用快照時減少分配 (I65c09)
- 從彈簧動畫中移除分配 (Ie9431)
- 從 TextLayout移除分配 (I0fd11)
- 移除指標速度追蹤中的多個配置 (I26bae)
1.5.0-alpha04 版
2023 年 5 月 10 日
發布 androidx.compose.foundation:foundation:1.5.0-alpha04 和 androidx.compose.foundation:foundation-layout:1.5.0-alpha04。1.5.0-alpha04 版包含以下修訂項目。
API 變更
- 新增最佳化 TextStyle.merge(...),並提供完整參數清單。(Iad234、b/246961787)
- 推出可與 LazyGridState搭配使用的SnapLayoutInfoProvider。(I92134、b/269237141、b/260914964)
- 針對延遲交錯格線項目範圍新增實驗性 Modifier.animateItemPlacement()。您可以將其套用至項目,實現自動位置變更/重新排序動畫。(I4b62d、b/257034719)
- 將 GridCells.FixedSize升級為穩定版。FixedSize會定義LazyGrid,其中每個儲存格在交叉軸上都會採用確切大小,剩餘空間則會由交叉軸排列方式分配。(I8542f)
- 針對 Pager 推出接收器範圍 PagerScope,以及用於計算指定頁面位移的公用函式。(If2577)
- 建立貼齊快速滑過行為時,請導入 snapPositionalThreshold。使用這個參數,在 Pager 中指定短暫停的位置門檻。(If8f7f)
- 以 calculateSnappingOffset取代SnapLayoutInfoProvider.calculateSnappingOffsetBounds。在這個新方法中,我們只會要求下一個要對齊的位移。計算界線時應在實作層級執行,因為這可能會因需要執行的對齊方式而異。(I923a4)
- LazyStaggeredGridAPI 已升級為穩定版。(I633a5)
- 從 Horizontal/VerticalPager移除pageCount。這項資訊應在建立狀態時提供。更新PagerState和rememberPagerState,以接受pageCount。(Ieb52d、b/266965072)
- 從 Horizontal/VerticalPager移除pageCount。這項資訊應在建立狀態時提供。更新PagerState和rememberPagerState,以接受pageCount。(Ifa3cb、b/266965072)
- 在 Pager 的 SnapFlingBehavior中導入shortSnapVelocityThreshold。(I7379e、b/275579012)
- 新增 FlowRowScope和FlowColumnScope。(I54fe2)
修正錯誤
- 在限制條件有 minWidth和minHeight時,對 Text 取得語意的呼叫不再會導致當機。(Ibd072)
- 修正迴歸問題:鍵盤不會顯示在並非由 Dialog可組合函式建立的對話方塊內文字欄位。(I82551、b/262140644)
1.5.0-alpha03 版
2023 年 4 月 19 日
發布 androidx.compose.foundation:foundation:1.5.0-alpha03 和 androidx.compose.foundation:foundation-layout:1.5.0-alpha03。1.5.0-alpha03 版包含此連結所列的修訂項目。
這個版本可為 Compose 啟用新的文字算繪堆疊。新堆疊已針對效能進行最佳化,您應該不會看到任何明顯變化。
如果發現轉譯文字有變化,可以設定 NewTextRendering1_5 = false 進行偵錯,確認行為差異。設定此項目會強制重新組合。如有任何行為差異,請回報錯誤。
這個偵錯標記會在 1.5 beta01 版發布前移除。(Iada23、b/246960758)
API 變更
- 將 FlowColumn/FlowRow設為內嵌。(Idab37)
1.5.0-alpha02 版
2023 年 4 月 5 日
發布 androidx.compose.foundation:foundation:1.5.0-alpha02 和 androidx.compose.foundation:foundation-layout:1.5.0-alpha02。1.5.0-alpha02 版包含以下修訂項目。
API 變更
- 在 LazyGrid中新增對固定大小儲存格的支援,並使用交叉軸排列方式排列儲存格。(I83ed9、b/235121277、b/267942510)
- 在 LazyStaggeredGrid中新增固定大小車道的支援,並使用交叉軸排列方式排列車道。(I7d519)
- 現在可透過 TalkBack等無障礙服務開啟AnnotatedString中的UrlAnnotation。(If4d82、b/253292081)
- 新增文字欄位的 InsertTextAtCursor語意動作。(I11ed5)
- 現在,文字相關的測試動作 (例如 performTextInput) 會使用語意動作直接要求焦點,而不是點選欄位。(I6ed05)
- 使用 FlowRow中的verticalArrangement和FlowColumn中的horizontalArrangement,新增對交叉軸間距/排列方式的支援。我們也會在FlowRow/FlowColumn中移除頂層的verticalAlignment和horizontalAlignment。開發人員可以改用Modifier.align。這樣可減少verticalAlignment和verticalArrangement的命名慣例混淆。(I87b60、b/268365538)
1.5.0-alpha01 版本
2023 年 3 月 22 日
發布 androidx.compose.foundation:foundation:1.5.0-alpha01 和 androidx.compose.foundation:foundation-layout:1.5.0-alpha01。1.5.0-alpha01 版包含以下修訂項目。
API 變更
- 文字和 BasicText會經過重構,以使用新的修飾符系統。在許多情況下,這可大幅提升效能。使用者應該不會看到任何變更。(If1d17、b/246961435)
- 新增 PerformImeAction語意動作,用於在文字編輯器節點上叫用 IME 動作。(Ic606f、b/269633506)
修正錯誤
- 更新 Modifier.hoverable的內部項目。只有在啟用hoverable修飾符時,檢查器才會顯示該修飾符。(I82103)
1.4 版
1.4.3 版本
2023 年 5 月 3 日
發布 androidx.compose.foundation:foundation:1.4.3 和 androidx.compose.foundation:foundation-layout:1.4.3,但沒有任何變更 (僅版本號碼變更)。
1.4.2 版
2023 年 4 月 19 日
發布 androidx.compose.foundation:foundation:1.4.2 和 androidx.compose.foundation:foundation-layout:1.4.2。1.4.2 版包含以下修訂項目。
1.4.1 版本
2023 年 4 月 5 日
發布 androidx.compose.foundation:foundation:1.4.1 和 androidx.compose.foundation:foundation-layout:1.4.1。1.4.1 版包含此連結所列的修訂項目。
1.4.0 版本
2023 年 3 月 22 日
發布 androidx.compose.foundation:foundation:1.4.0 和 androidx.compose.foundation:foundation-layout:1.4.0。1.4.0 版本包含這些修訂版本。
自 1.3.0 版以來的重要異動
- 在 Text和TextField中新增 EmojiCompat 整合功能,以及較低層級的段落。設定 emojicompat 時,這項功能預設為啟用。
- 您可以使用 PlatformParagraphStyle在特定 Text 上設定EmojiCompat。
- 支援完整行距 LazyStaggeredGrid(I28252)
- 在 ClickableText中新增實驗性的onHover(I6938f)
- 針對接受 CoroutineContext參數的runComposeUiTest函式和create*ComposeRule函式,推出新的實驗性超載。結構定義將用於測試組合及當中的LaunchedEffect和rememberCoroutineScope()呼叫。(I10614、b/265177763)
- FlowRow和- FlowColumn現已用- @ExperimentalFoundationApi的形式提供,可在主軸空間不足時,針對會斷行的元件提供更彈性的列與欄式版面配置 (I3a7b2)。
- 提供 Modifier.basicMarquee()實驗性功能,可在顯示內容時呈現捲動式跑馬燈效果 (I2df44、b/139321650)。
1.4.0-rc01 版本
2023 年 3 月 8 日
發布 androidx.compose.foundation:foundation:1.4.0-rc01 和 androidx.compose.foundation:foundation-layout:1.4.0-rc01。1.4.0-rc01 版包含以下修訂項目。
API 變更
- 推出新的低階 PlatformTextInputAdapterAPI,用於建構可直接與平台 API 通訊的自訂文字輸入實作項目。(I58df4)
- 在 LazyStaggeredGrid中新增對反向版面配置的支援。(I3ef4a)
修正錯誤
- BasicTextField的- SetText語意動作現在會使用與 IME 更新和測試函式 (例如- performTextReplacement) 相同的程式碼路徑,更新文字緩衝區。
- 文字測試函式 performTextClearance、performTextReplacement和performTextSelection現在使用SemanticsActions。(I0807d、b/269633168、b/269624358)
1.4.0-beta02 版本
2023 年 2 月 22 日
發布 androidx.compose.foundation:foundation:1.4.0-beta02 和 androidx.compose.foundation:foundation-layout:1.4.0-beta02。1.4.0-beta02 版包含以下修訂項目。
API 變更
- 新增 Modifier.Node.onReset()回呼,讓您重設部分本機狀態,以便正確處理Layout重複使用的情況 (例如做為LazyColumn的項目)。修正FocusTargetModifierNode,以正確重設焦點狀態。(I65495、b/265201972)
- 在 DrawScope.drawText、Paragraph.paint和MultiParagraph.paint方法中新增BlendMode參數,以便在畫布上繪製文字時支援不同的混合演算法。(I57508)
- 已移除 modifierElementOf()API。請改為直接從ModifierNodeElement擴充。(Ie6d21)
修正錯誤
- 調整選取控點時,無法再選取部分字元。(Idedd1)
- 修正在空白 TextField上按下 Ctrl+Backspace 時發生的當機問題 (I0427f、b/244185537)
1.4.0-beta01 版本
2023 年 2 月 8 日
發布 androidx.compose.foundation:foundation:1.4.0-beta01 和 androidx.compose.foundation:foundation-layout:1.4.0-beta01。1.4.0-beta01 版包含此連結所列的修訂項目。
新功能
- 自 1.3 起,在 Text和TextField中新增了 EmojiCompat 整合功能,以及較低層級的 Paragraph。設定 emojicompat 時,這項功能預設為啟用。
- 您可以使用 PlatformParagraphStyle在特定 Text 上設定EmojiCompat。
API 變更
- 新增 PinnableContainerAPI 的常見實作項目,用於所有LazyLayouts,可保留離開組合的項目,但仍需保持啟用狀態。(If45a4)
- PinnableContainer.PinnedHandle.unpin()已重新命名為- release()(I4667a)。
外部貢獻
- 在 LazyListLayoutInfo、LazyGridLayoutInfo和LazyStaggeredGridItemInfo中新增mainAxisItemSpacing屬性 (I52fad)
1.4.0-alpha05 版
2023 年 1 月 25 日
發布 androidx.compose.foundation:foundation:1.4.0-alpha05 和 androidx.compose.foundation:foundation-layout:1.4.0-alpha05。查看 1.4.0-alpha05 版的修訂項。
新功能
- 支援完整行距 LazyStaggeredGrid(I28252)
- 在 ClickableText中新增實驗性的onHover(I6938f)
- 針對接受 CoroutineContext參數的runComposeUiTest函式和create*ComposeRule函式,推出新的實驗性超載。結構定義將用於測試組合及當中的LaunchedEffect和rememberCoroutineScope()呼叫。(I10614、b/265177763)
API 異動
- 將 OverscrollEffect的前/後 API 合併至組合的「裝飾器」applyToScroll和applyToFling函式。請參閱說明文件中的更新範例,瞭解如何以新 API 的形式實作過度捲動效果。(I8a9c4、b/255554340)
- 針對內嵌函式/已淘汰的隱藏函式,提供更多類型/是否可為空值選項 (I24f91)
- TextStyle中的- LineBreak和- HyphensAPI 升級為穩定版。(Ic1e1d)
修正錯誤
- 即使停用動畫,文字欄位中的游標也會持續閃爍。(I95e70、b/265177763)
- 即使在系統設定中停用動畫,Modifier.basicMarquee也會顯示動畫效果。(I23389、b/262298306、b/265177763)
外部貢獻
- TextInputSession和- TextInputService中的- notifyFocusedRect方法不會再次淘汰。(I23a04、b/262648050)
1.4.0-alpha04 版本
2023 年 1 月 11 日
發布 androidx.compose.foundation:foundation:1.4.0-alpha04 和 androidx.compose.foundation:foundation-layout:1.4.0-alpha04。查看 1.4.0-alpha04 版的修訂項。
新功能
- FlowRow和- FlowColumn現已用- @ExperimentalFoundationApi的形式提供,可在主軸空間不足時,針對會斷行的元件提供更彈性的列與欄式版面配置 (I3a7b2)。
- 提供 Modifier.basicMarquee()實驗性功能,可在顯示內容時呈現捲動式跑馬燈效果 (I2df44、b/139321650)。
API 變更
- FocusRequesterModifier已淘汰,並改用- FocusRequesterNode(I7f4d7、b/247708726、b/255352203、b/253043481、b/247716483、b/254529934、b/251840112、b/251859987、b/257141589)。
- 包含 variationSettings的AndroidFont建構函式現在是穩定版 API,可用於建立新類型的字型描述元 (I5adcc、b/261565807)。
- 透過本機組合導入可由 Lazy 清單提供的 PinnableContainerAPI,藉此固定目前項目。也就是說,當這類項目因為捲動操作而超出檢視區塊時,並不會遭到捨棄。舉例來說,Modifier.focusable()會透過這個機制固定目前聚焦的項目 (Ib8881、b/259274257、b/195049010)。
- 重新編寫可捲動項目回應 bringIntoViewRequesters和可聚焦項目的方式,進一步模擬這些作業的複雜度並處理更多極端情況 (I2e5fe、b/241591211、b/192043120、b/237190748、b/230756508、b/239451114)。
- 更多已淘汰隱藏函式的傳回類型為空值 (Ibf7b0)。
- 新增實驗性 TextMotion至TextStyle,將文字定義為Static(default)或動畫。如要透過動畫縮放、變換或旋轉文字,請使用TextMotion.Animated(I24dd7)。
- 新增 TextFieldFocusModifier,修正 Android 平台的焦點導覽行為 (I00303)。
- 將 drawText中的maxSize: IntSize引數替換為size: Size,以便內嵌於其他DrawScope函式。size預設為Size.Unspecified,這應該不會變更先前的預設行為 (Icd27d)。
修正錯誤
- 調整 SnapFlingBehaviour中的貼齊物理行為,讓效果更自然。
已知問題
- 從 androidx.compose.foundation:1.4.0-alpha03更新為androidx.compose.foundation:1.4.0-alpha04時,您可能會遇到java.lang.NoSuchFieldError錯誤,這個網頁是最初回報問題的地方。我們已提交修正程式,預計下次 Compose 更新時就會發布。目前暫時性的解決方法是將androidx.compose.material和androidx.compose.material3程式庫更新為最新版本 (1.1.0-alpha04),或將androidx.compose.foundation降級為 1.4.0-alpha03。
1.4.0-alpha03 版本
2022 年 12 月 7 日
發布了 androidx.compose.foundation:foundation:1.4.0-alpha03 和 androidx.compose.foundation:foundation-layout:1.4.0-alpha03。查看 1.4.0-alpha03 版的修訂項。
API 變更
- 在使用 Compose 規則的 UI 測試中,系統會等所有影格回呼執行完畢,才會分派在 withFrameNanos回呼期間恢復的連續作業。這與 Compose 正常執行時的行為相符。不過,仰賴舊行為的測試可能會失敗。這只會影響直接呼叫withFrameNanos或withFrameMillis的程式碼,並將回呼外的邏輯傳遞至可能需要在回呼內移動的函式。請參閱這份 CL 範例中的動畫測試變更。
- 將選用的 onPerformTraversals: (Long) -> Unit參數新增至TestMonotonicFrameClock建構函式和工廠函式,以便在withFrameNanos回呼之後和重新啟用呼叫端協同程式之前執行程式碼。(Idb413、b/254115946、b/222093277、b/255802670)
- 導入頁面無障礙動作:PageUp、PageDown、PageLeft、PageRight。請注意,這些內容僅適用於 API 29。(Ida4ab)
- 導入 HorizontalPager和VerticalPager,以 Pager 方式顯示可組合項。導入PagerState,藉此控制 Pager 和 Pager 目前狀態的查詢資訊。導入PageSize,這是控制 Pager 頁面大小的一種方法,可用來建立類似 Pager 的輪轉介面。導入PagerSnapDistance,可控制貼齊功能在 Pager 的快速滑過行為的運作方式。(I01120)
- 已在 SnapFlingBehavior.performFling中引入超載,幫助您瞭解快速滑過發生的位置。(I569f6)
- 已移除 OverscrollEffect#isEnabled。您不必記住並設定這個標記,而不要在不顯示過度捲動的情況下,將事件分派到過度捲動效果 (例如,如果ScrollableState#canScrollForward/backward都傳回 false)。(I1a4b0、b/255554340、b/255557085)
- 新增 ScrollableState#canScrollForward和ScrollableState#canScrollBackward以查詢ScrollableState是否有向任何方向捲動的空間 (是否位於其範圍的最小 / 最大範圍內)。為了兼顧與ScrollableState現有實作的回溯相容性,這個欄位預設為 true。取用者可利用這項功能,向使用者顯示指示,讓使用者知道是否還有捲動空間;也可以用於避免將差異遷移調度至ScrollableStates,其沒有空間在指定方向捲動,以減少不必要的工作。(Idf1a0、b/255557085)
- 新增用於查詢祖系捲動資訊的 Modifier API。(I2ba9d、b/203141462)
- 如果手勢可能產生捲動事件,用在 Clickable中可正確延遲按下的互動動作。
- 修正了在 Scrollable ViewGroup中使用Clickables時無法正確延遲漣漪效果的問題。
- 更新導覽匣和試算表,以便在手勢變為捲動事件時正確延遲按下動作。
- 更新 snapStepSize命名方式,使其與SnapLayoutInfoProvider中的其他方法保持一致。(Ife67c)
- 將 EmojiCompat新增至Compose(Ibf6f9、b/139326806)
- 已將 consumedWindowInsets()重新命名為consumeWindowInsets(),並將withConsumedWindowInsets()重新命名為onConsumedWindowInsetsChanged(),並將修飾符設為公開。(Ie44e1)
修正錯誤
- 修正 Modifier.animateItemPlacement()和 Lazy 格線異常終止的問題。以前若新項目的數量比先前的項目少,有時就會發生這種情況。(I0bcac、b/253195989)
1.4.0-alpha02 版本
2022 年 11 月 9 日
發布了 androidx.compose.foundation:foundation:1.4.0-alpha02 和 androidx.compose.foundation:foundation-layout:1.4.0-alpha02。1.4.0-alpha02 版本包含以下修訂項目。
API 變更
- awaitFirstDown和- waitForUpOrCancellation現在接受- PointerEventPass,靈活性更高 (I7579a、b/212091796)。
- 從 Lazy* API 還原 beyondBoundCountAPI (I12197)
- 在 Lazy API 中導入了參數,用於撰寫和放置可視區域外項目 (I69e89、b/172029355)
- 在 BasicText和BasicTextField中新增了minLines參數。這樣即可使用行數來設定這些可組合項的最小高度 (I24294、b/122476634)
1.4.0-alpha01 版
2022 年 10 月 24 日
發布了 androidx.compose.foundation:foundation:1.4.0-alpha01 和 androidx.compose.foundation:foundation-layout:1.4.0-alpha01。1.4.0-alpha01 版本包含這些修訂版本。
API 變更
- 新增了適用於手勢偵測工具的新方法:awaitEachGesture()。運作方式與forEachGesture()類似,但手勢的迴圈完全在AwaitPointerEventScope內運作,因此事件不會在疊代之間遺失。
- 由於 forEachGesture()會導致事件在手勢間遺失,因此已將其淘汰並改用awaitEachGesture()(Iffc3f、b/251260206)
- 新增 WindowInsets.imeAnimationSource 和WindowInsets.imeAnimationTarget,可協助判斷動畫進度,並掌握輸入法編輯器在動畫結束後的位置 (I356f1、b/217770337)
1.3 版本
1.3.1 版本
2022 年 11 月 9 日
發布了 androidx.compose.foundation:foundation:1.3.1 和 androidx.compose.foundation:foundation-layout:1.3.1。1.3.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正 BeyondBoundsLayout中的效能問題 (aosp/2255266)
- 除非附加 ContentInViewModifier,否則不會讀取版面配置座標 (aosp/2241316)
1.3.0 版本
2022 年 10 月 24 日
發布了 androidx.compose.foundation:foundation:1.3.0 和 androidx.compose.foundation:foundation-layout:1.3.0。1.3.0 版本包含以下修訂項目。
自 1.2.0 版以來的重要異動
- 推出 LazyVerticalStaggeredGrid和LazyHorizontalStaggeredGrid的實驗版本。
- 已將 SnapFlingBehavior、rememberSnapFlingBehavior和其他對應的 API 新增為實驗功能。
- 現在,如果使用鍵盤或遙控器上的 D-Pad 按一下 Modifier.clickable、Modifier.toggleable和Modifier.selectable,會顯示漣漪效果。
1.3.0-rc01 版本
2022 年 10 月 5 日
發布了 androidx.compose.foundation:foundation:1.3.0-rc01 和 androidx.compose.foundation:foundation-layout:1.3.0-rc01。1.3.0-rc01 版本包含以下修訂項目。
API 變更
- 在沒有足夠的快速滑過速率可減慢時,採用方法步驟使用的 lowVelocityAnimationSpec(Iaeb27)
- 新增了實驗性 API Hyphens,以支援 Text 中的自動連字號 (Iaa869)
1.3.0-beta03 版本
2022 年 9 月 21 日
發布了 androidx.compose.foundation:foundation:1.3.0-beta03 和 androidx.compose.foundation:foundation-layout:1.3.0-beta03。1.3.0-beta03 版本包含以下修訂項目。
API 變更
- 新增自訂文字斷行選項 (I86907)
- BringIntoViewResponder現在在處理要求時,可以取得最新的邊界 (If86a5、b/241591211)。
- 實驗性 Staggered Grid現在支援項目間距 (I10b82)
- 在實驗性 Staggered Grid新增內容邊框間距 (I342ea)
- 變更 TextMeasurer.measure方法中的size:IntSize引數與constraints: Constraints,來處理最小的寬度限制 (I37530、b/242707525)
- 新增 Modifier.withConsumedWindowInsets(),這個函式會取得已使用的WindowInsets,可供在windowInsetsPadding之外使用。
- 新增了 MutableWindowInsets,以便在不重新組合的情況下輕鬆變更WindowInsets(I7fd28、b/237019262、b/243119659)
1.3.0-beta02 版本
2022 年 9 月 7 日
發布了 androidx.compose.foundation:foundation:1.3.0-beta02 和 androidx.compose.foundation:foundation-layout:1.3.0-beta02。1.3.0-beta02 版本包含以下修訂項目。
API 變更
- 實驗性 StaggeredGrid的初始版本 (Ia48be)
- 已將 FocusDirection.In和FocusDirection.Out重新命名為FocusDirection.Enter和FocusDirection.Exit(Ia4262、b/183746982)
- 推出了 rememberSnapFlingBehavior超載,以便快速在LazyLists中啟用貼齊功能 (Ifb48a)
- 使用具體的 SnapFlingBehavior類別取代了snapFlingBehavior工廠。將SnapLayoutInfoProvider方法的範圍限定為「密度」,讓 API 使用者更容易進行 Dp<->Px 轉換 (I54a11)
- 更新 LazyLayoutMeasureScope.measure以傳回可置放的值清單,突顯傳回的值所需的不變性 (I48b7c)
- 推出了 SnapLayoutInfoProvider,取用LazyListState來建立SnapLayoutInfoProvider的執行個體,可用於為LazyLists啟用貼齊FlingBehavior(I2dd10)
修正錯誤
- 重構 AwaitPointerEventScope#awaitLongPressOrCancellation以比對其他 await 函式 (I646e6)
1.3.0-beta01 版本
2022 年 8 月 24 日
發布了 androidx.compose.foundation:foundation:1.3.0-beta01 和 androidx.compose.foundation:foundation-layout:1.3.0-beta01。1.3.0-beta01 版本包含以下修訂項目。
API 變更
- 從 OverscrollEffect中移除pointerPosition- 需要注意指標位置的特效,可以使用effectModifier中的Modifier.pointerInput { },來取得目前的指標位置 (I9f606、b/241239306)。
- 公開 AwaitPointerEventScope#awaitLongPressOrCancellation做為其他用於更複雜手勢偵測的建構區塊 (I04374、b/181577176)
- 推出了 lazyListSnapLayoutInfoProvider用來在 Lazy 清單中啟用貼齊功能 (I3ecdf)
- 推出了 SnapFlingBehavior,這是可啟用清單貼齊功能的快速滑過行為。提供一個SnapLayoutInfoProvider的執行個體,內容包含貼齊版面配置的相關資訊 (Ie754c)
1.3.0-alpha03 版本
2022 年 8 月 10 日
發布了 androidx.compose.foundation:foundation:1.3.0-alpha03 和 androidx.compose.foundation:foundation-layout:1.3.0-alpha03。1.3.0-alpha03 版本包含以下修訂項目。
API 變更
- 資源字型現在支援字型變化版本設定 (API 26 以上級別) (I900dd、b/143703328)
- DeviceFontFamilyNameFont中的可變字型支援 (Ic1279、b/143703328)
- 從 PlatformTextStyle和LineHeightStyle中移除實驗性註解 (I64bef)
- 如果 VisualTransformation提供的OffsetMapping傳回無效索引,文字欄位現在會擲回更詳細的例外狀況 (Ie73f9、b/229378536)。
- 推出實驗性 API,在多個 Lazy 版面配置之間共用項目提供者的邏輯 (Ic891c)
- ScrollableDefaults.reverseDirection()已不再處於實驗階段 (Iba646)
- 淘汰了 SemanticsModifier.id,並將語意 ID 移至LayoutInfo.semanticsId(Iac808、b/203559524)
- checkScrollableContainerConstraints()不再處於實驗階段 (I2c290)
- Modifier.clipScrollableContainer()不再處於實驗階段 (Ia2b44)
- 淘汰 TextInputService.show|hideSoftwareKeyboard。請在應用程式程式碼中改用SoftwareKeyboardController,並在輸入法編輯器管理程式碼中使用TextInputSession。(I14e4c、b/183448615)
1.3.0-alpha02 版本
2022 年 7 月 27 日
發布了 androidx.compose.foundation:foundation:1.3.0-alpha02 和 androidx.compose.foundation:foundation-layout:1.3.0-alpha02。1.3.0-alpha02 版包含以下修訂項目。
API 變更
- 在 DrawScope上新增drawText擴充功能函式,這樣就能針對在DrawScope(例如Canvas和drawBehind) 上運作的可組合項和修飾符,繪製多樣式的文字。(I16a62、b/190787898)
修正錯誤
- 現在如果聚焦的文字欄位處於停用狀態,就會隱藏文字鍵盤 (I6e3e4、b/237308379)。
- 將 InputEventChange事件加入至速率追蹤器時,我們現在會考慮使用差異值而非位置,所以即使目標元素移動,也能確保所有案例的速度計算正確 (Icea9d、b/216582726、b/223440806、b/227709803)
- 如果可捲動項目中有聚焦的子項,現在當整個項目縮小,甚至大小因動畫改變時,都能正常捲動並讓聚焦的子項保持在畫面中。(I80867、b/230756508、b/220119990)
- 修正在選擇狀態下清除並重新填入 TextField會導致異常終止的問題。(I1235b、b/208655565、b/214253689)
1.3.0-alpha01 版本
2022 年 6 月 29 日
發布了 androidx.compose.foundation:foundation:1.3.0-alpha01 和 androidx.compose.foundation:foundation-layout:1.3.0-alpha01。1.3.0-alpha01 版本包含以下修訂項目。
API 變更
- 推出 UrlAnnotation註解類型與相關的方法,能夠支援AnnotatedString中的TalkBack連結支援。(I1c754、b/231495122)
修正錯誤
- BasicTextField- cursorBrush現在可以動畫處理,無須重新啟動游標計時器 (I812e6、b/236383522)
1.2 版本
1.2.1 版本
2022 年 8 月 10 日
發布了 androidx.compose.foundation:foundation:1.2.1 和 androidx.compose.foundation:foundation-layout:1.2.1。1.2.1 版本包含以下修訂項目。
1.2.0 版
2022 年 7 月 27 日
發布了 androidx.compose.foundation:foundation:1.2.0 和 androidx.compose.foundation:foundation-layout:1.2.0。1.2.0 版本包含以下修訂項目。
自 1.1.0 版以來的重要異動
- LazyVerticalGrid和- LazyHorizontalGrid現已穩定。
- 您現在可以為 Lazy 清單和格線項目中的項目指定內容類型。如此一來,元件就能更有效率地重複使用元素。
- Lazy 清單和格線現在包含 userScrollEnabled參數,可透過使用者手勢停用捲動功能。
- 新增了名為 LazyLayout的實驗性 API。這是我們在內部使用的 API,用來支援 Lazy 清單和格線。
- OverscrollEffectAPI 推出實驗性版本。您可以定義自訂過度捲動效果,也可以將標準平台新增至自訂的可捲動容器。
- 推出了巢狀捲動互通性 API,以允許檢視畫面和 compose 捲動操作者之間的互通性。
- 滑鼠和觸控板的捲動功能已新增至所有捲動容器。
1.2.0-rc03 版本
2022 年 6 月 29 日
發布了 androidx.compose.foundation:foundation:1.2.0-rc03 和 androidx.compose.foundation:foundation-layout:1.2.0-rc03。1.2.0-rc03 版本包含以下修訂項目。
- 自 1.2.0-rc02 以來沒有變更。
1.2.0-rc02 版
2022 年 6 月 22 日
發布了 androidx.compose.foundation:foundation:1.2.0-rc02 和 androidx.compose.foundation:foundation-layout:1.2.0-rc02。1.2.0-rc02 版本包含以下修訂項目。
1.2.0-rc01 版
2022 年 6 月 15 日
發布了 androidx.compose.foundation:foundation:1.2.0-rc01 和 androidx.compose.foundation:foundation-layout:1.2.0-rc01。1.2.0-rc01 版本包含以下修訂項目。
API 變更
- 我們推出了實驗性 OverscrollEffect,可以支援自訂過度捲動功能,以及接受Modifier.scrollable的超載。
- 實驗性 LocalOverScrollConfiguration已從foundation.gesture移至基礎套件,並重新命名為LocalOverscrollConfiguration(If19fb、b/204650733)
- 撰寫程式庫中的介面現已使用 jdk8 預設介面方法建立 (I5bcf1)
- 推出實驗性 API checkScrollableContainerConstraints(),檢查我們是否並未為捲動容器建立巢狀結構。透過LazyLayout建立自訂捲動式延遲版面配置時就可以使用。(Id6fab、b/233352497)
- 已從 androidx.compose.foundation.lazy套件中移除已淘汰的LazyVerticalGrid。新版穩定 API 位於androidx.compose.foundation.lazy.grid(I73c76、b/225192009)
1.2.0-beta03 版本
2022 年 6 月 1 日
發布了 androidx.compose.foundation:foundation:1.2.0-beta03 和 androidx.compose.foundation:foundation-layout:1.2.0-beta03。1.2.0-beta03 版本包含以下修訂項目。
API 變更
- 新增了實驗性 IntervalList和MutableIntervalList。這可讓您透過多個間隔來表示部分值的清單。如果要定義類似LazyColumn使用的自訂 DSL,而其中清單項目可透過多個項目呼叫定義,這個功能就非常實用 (I2d05e、b/228580728)
修正錯誤
- 釐清有關 WindowInsets.ime的說明文件,指出 API 23 以上級別皆可回報ime插邊,但只有 API 30 以上級別會採用「動畫」(Ia7fc0、b/230756508)。
- 當游標移到文字欄位結尾時,按下向前刪除鍵不會再當機。
- 現在 DeleteSurroundingTextCommand和DeleteSurroundingTextInCodePointsCommand的建構函式引數不得為負數。(Ica8e6、b/199919707)
1.2.0-beta02 版
2022 年 5 月 18 日
發布了 androidx.compose.foundation:foundation:1.2.0-beta02 和 androidx.compose.foundation:foundation-layout:1.2.0-beta02。1.2.0-beta02 版本包含以下修訂項目。
- 不會變更 Text 或 TextField配置大小的可下載字型解析度先前不會重繪,導致字型顯示過時。這項錯誤修正可確保文字版面配置一定會觸發重繪 (b/229727404)。(I1d49e、b/229727404)
1.2.0-beta01 版本
2022 年 5 月 11 日
發布 androidx.compose.foundation:foundation:1.2.0-beta01 和 androidx.compose.foundation:foundation-layout:1.2.0-beta01。1.2.0-beta01 版本包含以下修訂項目。
新功能
- 這是 1.2 版的第一個 Beta 版!
API 變更
- 新增了實驗性的 BeyondBoundsInterval,可供LazyList的自訂實作用於布局範圍超出可見邊界的情況 (Ifabfb、b/184670295)
- LineHeightBehavior已重新命名為- LineHeightStyle。
- LineVerticalAlignment已重新命名為- LineHeightStyle.Alignment。
- LineHeightTrim已重新命名為- LineHeightStyle.Trim。
- 移除 LineHeightStyle中的預設建構函式值 (I582bf、b/181155707)。
- 新增了 LazyLayoutItemProvider介面選用成員的預設值。(Iba8a0)
- 在 LazyLayoutItemProviderAPI,我們現在不再需要由工廠按照索引傳回可組合的 lambda,而能用更簡單的可組合函式項目接受索引。(Id2196)
- LazyLayoutItemsProvider 已重新命名為 LazyLayoutItemProvider (I0638c)
- LazyLayoutItemsProvider.itemsCount已重新命名為- itemCount(Id409c)
- 針對 TextStyle和SpanStyle新增 Brush,可供繪製漸層上色的文字。(I53869、b/187839528)
- LineHeightBehavior的- trimFirstLineTop、- trimLastLineBottom屬性已變更為單一列舉:- LineHeightTrim。- LineHeightTrim有由兩個布林值定義的 4 種狀態值:- FirstLineTop、- LastLineBottom、Both 和 None (Ifc6a5、b/181155707)
- 為 - TextStyle和- ParagraphStyle. LineHeightBehavior新增了- LineHeightBehavior,可控制是否要將行高套用於第一行的頂部和最後一行的底部,以及定義- TextStyle(- lineHeight) 所提供空間中的行對齊方式。- 舉例來說,您可以透過 - LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false),獲得與 CSS 定義行為類似的結果。
- trimFirstLineTop、- trimLastLineBottom設定只有在- includeFontPadding設定為 False 時才能正確運作。(I97332、b/181155707)
- 新增實驗性的 - imeNestedScroll()修飾符,方便開發人員以捲動方式控制輸入法編輯器。(I60759)
修正錯誤
- 修正迴歸問題:從可組合項中移除位於焦點的文字欄位時,文字欄位不會隱藏鍵盤。(I7a410、b/230536793、b/225541817)
- 在高度有限且無法容納所有文字行時支援刪節號 (Ie528c、b/168720622)。
- BringIntoViewRequester.bringIntoView將一直處於暫停狀態,直到要求完成或由較新的非重複要求中斷為止。重疊的要求將排入佇列 (I43e7f、b/216790855)。
- 針對完全重疊矩形的並行 BringIntoViewRequester.bringIntoView呼叫,現在只會處理較大矩形的要求。(I34be7、b/216790855、b/184760918)
- 已開啟預設 includeFontPadding。您可以使用TextStyle.platformTextStyle屬性關閉includeFontPadding。我們即將變更預設行為。但在此之前,這種做法能以較好的方式整合行高改善項目 (aosp/2058653),並解決TextField裁剪問題 (I01423、b/171394808)
- Modifier.bringIntoViewRequester已不再使用- onGloballyPositioned。(I630f5)
外部貢獻
- 現在垂直捲動時,就會在 Android 上反轉 MouseInjectionScope.scroll(delta = someDelta)(如果 someDelta 為正值,則會向下捲動) (Ifb697、b/224992993)
1.2.0-alpha08 版
2022 年 4 月 20 日
發布 androidx.compose.foundation:foundation:1.2.0-alpha08 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha08。1.2.0-alpha08 版本包含以下修訂項目。
API 變更
- 使用 FontFamily.SansSerif時,可在 Android 的系統字型中顯示所有可用權重。這會在 API 21-28 內部使用備用廣告字型名稱,例如 Santa-serif-medium。由於之前 API 21-28 上僅支援 400 和 700 粗細,因此這是行為變更。(I380fe、b/156048036、b/226441992)
- 「段落」和「多段落」目前接受限制參數。傳送 Constraints.maxHeight目前為免人工管理,但未來會進行一些計算,例如根據高度進行刪節。(I6afee、b/168720622)
- SubcomposeSlotReusePolicy.getSlotsToRetain()可接受自訂 MutableSet 類別,該類別不允許在其中新增項目。(Icd314)
- 已從 PointerInputChange淘汰部分消耗功能 (減少或定位)。可使用consume()徹底使用變更。可使用isConsumed判斷其他使用者是否曾經使用過該變更。
- PointerInputChange::copy()現在會一律建立淺層複本。這表示只要使用一份複本,系統就會使用- PointerInputChange的複本。如要建立未繫結的- PointerInputChange,請改用建構函式。(Ie6be4、b/225669674)
- 已推出新的實驗性 LazyLayoutAPI。這可讓您建構自己的元件,例如LazyVerticalGrid中的LazyColumn。請注意,此 API 處於早期階段,在後續版本中可能有所調整 (Iba2bc、b/166591700)。
- AndroidFont現在使用- typefaceLoader做為建構函式參數 (I2c971)。
- WindowInsetscompanion 現在無論是否在螢幕上、或是否與視窗相交,都會顯示出來。如果裝置上有此物件、但目前並未處於運作狀態,也可以得知可能的大小。(I65182、b/217770337)
1.2.0-alpha07 版本
2022 年 4 月 6 日
發布了 androidx.compose.foundation:foundation:1.2.0-alpha07 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha07。1.2.0-alpha07 版本包含以下修訂項目。
API 變更
- 新增 PinnableParentAPI,讓 Lazy 版面配置能夠避免目前組合的項目遭到捨棄 (Ibbdd0、b/184670295)
- LazyListLayoutInfo和- LazyGridLayoutInfo現在有- beforeContentPadding和- afterContentPadding欄位 (I3b628、b/200920410)
- 新增 KeyboardType.Decimal做為Keyboard.Number的替代項,專用於在輸入法編輯器中加入小數分隔符。(Iec4c8、b/209835363)
- 新增字型描述元 Font(DeviceFontFamilyName),可選擇在字型備用廣告鏈中查詢系統已安裝的字型。(I30468、b/219754572)
- PointerEventType.Scroll和- PointerEvent.scrollDelta現在是穩定的 API (I574c5、b/225669674)
- 在 TextStyle/ParagraphStyle. includeFontPadding中新增includeFontPadding的臨時相容性設定,可透過TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))變更。這是配合遷移提供的臨時設定選項,日後將移除。(If47be、b/171394808)
- 更新 FontFamily.Resolver,以整合全系統中的粗體文字無障礙設定 (I6c1e7)
- ComposeView的- consumeWindowInsets擴充功能屬性可讓開發人員停用 Android WindowInsets 的消耗。這樣一來,階層中的個別- ComposeViews就能分別套用- WindowInsets,不會彼此干擾。(I0ef08、b/220943142)
1.2.0-alpha06 版本
2022 年 3 月 23 日
發布了 androidx.compose.foundation:foundation:1.2.0-alpha06 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha06。1.2.0-alpha06 版本包含以下修訂項目。
API 變更
- 新增 RequestFocus語意動作,用於要求聚焦於可聚焦的目標 (I17b71)
- FocusOrder現已合併至- FocusProperties,- focusProperties()現已具備- focusOrder()的所有功能。- FocusOrder和- focusOrder()已淘汰。接受- focusRequester的- focusOrder()應替換為- focusRequester()修飾符,並與- focusProperties()搭配使用。如此一來,修飾符就能更妥善區隔問題 (I601b7)
- 新增 WindowInsets.asPaddingValues(Density),方便開發人員在不需要組合的情況下完成轉換。(I94c35)
- 更新向量可繪項目剖析,支援自動鏡像,亦即在目前版面配置的方向為 RTL 時翻轉 VectorPainter的內容。(I79cd9、b/185760237)
修正錯誤
- 捲動修飾符 (Modifier.verticalScroll()、Modifier.horizontalScroll()和Modifier.scrollable()) 將在捲動區域大小改變後進行捲動,確保先前聚焦的可組合項仍顯示在畫面上。
- 現在,當 TextField 中有非延遲的可捲動項,而且軟輸入模式是 ADJUST_RESIZE時,只要文字欄位處於聚焦狀態並顯示鍵盤,TextField 就會一直顯示在鍵盤上方。(I4a485、b/190539358、b/192043120、b/216842427)
1.2.0-alpha05 版本
2022 年 3 月 9 日
發布了 androidx.compose.foundation:foundation:1.2.0-alpha05 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha05。1.2.0-alpha05 版本包含以下修訂項目。
API 變更
- LazyVerticalGrid和- LazyHorizontalGrid現已轉為穩定版。(I307c0)
- LazyGridItemInfo.Unknown已替換為- LazyGridItemInfo.UnknownRow和- LazyGridItemInfo.UnknownColumn(I56d51)
- LazyVerticalGrid/- LazyHorizontalGrid和所有相關 API 已移入- .grid子套件。請將匯入內容從- androidx.compose.foundation.lazy更新為- androidx.compose.foundation.lazy.grid。(I2d446、b/219942574)
- 文字︰includeFontPadding現在預設為關閉。系統會處理includeFontPadding=false造成的裁剪問題,長指令碼應不致於遭到裁剪。(I31c84、b/171394808)
- 測量後的介面現在起會顯示 parentData 屬性 (I3313f)
- 推出實驗性 Modifier.onFocusedBoundsChanged,以便觀察可聚焦子項的邊界 (I14283、b/220030968、b/190539358、b/192043120、b/216842427)。
- 新增了 LazyHorizontalGrid (I61ae7、b/191238807)。
- 新增用於定義跨軸大小的 LazyVerticalGridAPI (I17723)
- 新增 FocusGroup 修飾符 (I64bc0、b/213508274、b/184670295)
修正錯誤
- WindowInsets.toString()現在能顯示正確的值 (I1585d)
外部貢獻
- 已更新為使用 Kotlinx 協同程式 1.6.0 (I3366d)
1.2.0-alpha04 版
2022 年 2 月 23 日
發布了 androidx.compose.foundation:foundation:1.2.0-alpha04 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha04。1.2.0-alpha04 版本包含以下修訂項目。
API 變更
- 不需再利用 BringIntoViewResponders手動將傳遞向上傳送給父項回應者,而改為需立即回傳想讓父項帶入檢視畫面的矩形。(I8e66a)
- 支援在 Text 中載入非同步字型 (I77057、b/214587005)
- LazyVerticalGrid現在起允許將- line breaking置於跨距超出目前字行的項目之前 (I05c40、b/207462103)。
- excludeFromSystemGestures重新命名為- systemGesturesExclusion(I19526)
- LazyVerticalGrid現已支援 reverseLayout (I6d7d7、b/215572963、b/211753558)
- 新增 WindowInsets.only()方法,可讓開發人員只納入取自 WindowInsets 的尺寸。(I14c94、b/217768486)
- 新增 - ComposableTarget、- ComposableTargetMarker和- ComposableOpenTarget,在針對非設計對象的套用者呼叫可組合函式時,可報告編譯時間。- 在多數情況下,Compose 編譯器外掛程式能夠推論出註解,因此直接使用這些註解的情形應該相當罕見。無法推論的案例包括建立及使用自訂 Applier、抽象的可組合函式 (例如介面方法)、欄位,或是屬可組合 lambda 的全域變數 (本機變數和參數為推論得出),或在使用 - ComposeNode或相關的可組合函式時。- 對於自訂 Applier,呼叫 - ComposeNode或- ReusableComposeNode的可組合函式需要為函式和任何可組合的 lambda 參數類型新增- CompoableTarget註解。不過,與其直接使用- ComposableTarget,建議您建立以- ComposableTargetMarker加上註解的註解,再使用已標示的註解。使用- ComposableTargetMarker加上標示的可組合註解,等同於使用屬性類別完整名稱做為套用器參數的- ComposbleTarget。如需- ComposableTargetMarker的使用範例,請參閱- anroidx.compose.ui.UiComposable。(I38f11)
修正錯誤
- 現在可將負的捲動偏移值傳遞至 LazyGridState.scrollToItem()和LazyGridState.animateScrollToItem()(I025c6、b/211753558)
- 支援為 TextField 載入非同步字型。(Icc4bf、b/214587005)
1.2.0-alpha03 版本
2022 年 2 月 9 日
發布 androidx.compose.foundation:foundation:1.2.0-alpha03 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha03。1.2.0-alpha03 版本包含以下修訂項目。
API 變更
- 不會再呼叫 TextInputSession和TextInputService中的notifyFocusedRect方法,此方法現已淘汰。請改用BringIntoViewRequester(Ia4302、b/192043120、b/216842427、b/178211874)。
- 使用 Modifier.animateItemPlacement() 針對 Lazy 格線項目啟用動畫功能 (Ib6621、b/211753218)
- BringIntoViewRequester現在起可將請求傳播到主控的 Android View (Ia7a51)
- FontFamilyResolver現在起可經由- LocalFontFamilyResolver.current取用- 新增 createFontFamilyResolver(context)和createFontFamilyResolver(context, coroutineScope),可在使用 Compose 之外的情況下建立新的 FontFamily 解析器。
- Paragraph 和 MultiParagraph 現在起能接受 FontFamily.Resolver
- TextLayoutResult.layoutInput.fontFamilyResolver現在包含此版面配置使用的解析器,並淘汰不再使用的- TextLayoutResult.layoutInput.resourceLoader(Id5a45、b/174162090)。
 
- 新增 
- 新增 AndroidFont這個新的低階 API,可在 Android 上提供新型的字型資源描述元。例如,可從特定應用程式的後端載入字型、選擇性地從裝置上找出預先安裝的字型,或從目前字型工廠未提供的資源載入字型。- 擴充 Font.ResourceLoadedAPI,以支援選用和非同步的字型載入功能。我們不建議應用程式開發人員直接使用這個 API。如要新增字型類型,請參閱 AndroidFont。
- Font.AndroidResourceLoader擴充功能函式可用以在撰寫之外建構- Font.ResourceLoader。
- 將 loadingStrategy參數新增至以資源為基礎的字型,以便在資源字型參照可下載的字型 XML 時進行非同步載入。(Ie5aea、b/174162090)
 
- 擴充 
- Typeface(FontFamily)建構函式已經淘汰,之前用於預先載入字型,而且最多可能需要 10 秒才能下載字型。使用可下載的字型時,這個呼叫可能會封鎖達 10 秒。請改用- FontFamilyResolver.preload- 淘汰 fontResource(FontFamily): Typeface。之前用於預先載入字型,而且最多可能需要 10 秒才能下載字型。請改用FontFamilyResolver.preload(If8e7c、b/174162090)
 
- 淘汰 
- 您現在可以為 LazyVerticalGrid的項目指定內容類型;LazyGridScope上的項目函式現在可接受這類參數。提供這樣的資訊有助於項目撰寫作業重複使用邏輯,藉此提高效率,並且只在類型相似的項目之間重複使用內容。(I7b355、b/215372836)
- LazyListLayoutInfo和- LazyGridLayoutInfo現在有新屬性:- viewportSize、- orientation、- reverseLayout(Ifc8ed、b/200920410)
- 現在起可為 LazyColumn/LazyRow 的項目指定內容類型;LazyListScope 上的項目函式現在已可接受這種參數。提供這樣的資訊有助於項目撰寫作業重複使用邏輯,藉此提高效率,並且只在類型相似的項目之間重複使用內容。(I26506)
- 接受 maxSlotsToRetainForReuse的SubcomposeLayoutState建構函式現已淘汰,替換為接受SubcomposeSlotReusePolicy的新建構函式:新版介面可讓您更精準控制要保留哪些運算單元供日後重複使用 (I52c4d)。
- 新增 WindowInset 用以處理邊框間距與大小調整的輔助鍵。這樣就能讓一些內容延伸到插邊區,但主要內容仍不會跨入插邊區。例如,windowInsetsPadding 可用來設定內容區的邊框間距,以避免一些區域完全或部分遭到覆蓋。(Id0395、b/213942085)
修正錯誤
- 當焦點在 TextField 上時,TextField 現在會保持在鍵盤上方;如果軟輸入模式設為 ADJUST_PAN,則會顯示鍵盤 (I8eaeb、b/190539358、b/192043120)
- 電腦版會使用 FontFamily.Resolver的本機可組合項- 淘汰電腦版 FontLoader
- 新增電腦版適用的新 createFontFamilyResolver工廠函式 (I6bbbb、b/174162090)
 
- 淘汰電腦版 
- 切換文字欄位時,螢幕鍵盤輸入類型不會再閃爍。(I1bf50、b/187746439)
- 游標控點顯示時,對於文字欄位不再需要額外按返回按鈕。(Ideb4b、b/205726883)
- 調整文字選取放大鏡的行為,讓系統與平台的放大鏡一致。(Idd918、b/206833278)
1.2.0-alpha02 版本
2022 年 1 月 26 日
發布了 androidx.compose.foundation:foundation:1.2.0-alpha02 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha02。1.2.0-alpha02 版本包含以下修訂項目。
API 變更
- 將 NonRestartableComposable新增至屬於現有方法超載且無複雜邏輯的方法。如此一來,對於呼叫內部函式中重複的所有參數,可減少編譯器產生的記憶檢查 (等於)。(I90490)
- 新增 excludeFromSystemGesture修飾符,便於存取 Android 的setSystemGestureExclusionRects(I46f07)
修正錯誤
- 調整文字選取放大鏡的行為,讓系統與平台的放大鏡一致。(Idd918、b/206833278)
- LazyColumn、- LazyRow、- Modifier.verticalScroll及其他使用- Modifier.scrollable的容器支援滑鼠滾輪捲動功能。(I2b5e1、b/198214718)
1.2.0-alpha01 版本
2022 年 1 月 12 日
發布了 androidx.compose.foundation:foundation:1.2.0-alpha01 和 androidx.compose.foundation:foundation-layout:1.2.0-alpha01。1.2.0-alpha01 版本包含以下修訂項目。
API 變更
- 已為 LazyColumn、LazyRow和LazyVerticalGrid中加入新參數userScrollEnabled,讓使用者能透過觸控手勢或無障礙功能,暫時或永久性地停用使用者啟動的捲動操作。依然能夠經由 state 上的方法以程式輔助方式設定捲動 (I7eae9、b/201150093)。
- 在放大鏡修飾符中新增 onSizeChanged回呼。(I6879f)
- 現在拖曳 SelectionContainer中的選取控點時,就會顯示放大鏡小工具。(I30b38、b/139320979)
修正錯誤
- 已修正在捲動出視圖之外時,不會隱藏 TextField游標控點的問題 (I14552、b/208883748)。
依附元件更新
- 現在依附於 Kotlin 1.6.10。
1.1 版
1.1.1 版
2022 年 2 月 23 日
發布 androidx.compose.foundation:foundation:1.1.1 和 androidx.compose.foundation:foundation-layout:1.1.1。1.1.1 版本包含以下修訂項目。
修正錯誤
- 修正 androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList中的NullPointerException(aosp/1947059、b/206677462)
- 修正在 Android 上讀取剪貼簿時,由剪貼簿內容造成的當機問題 (I06020、b/197769306)
- 修正 LazyVerticalGrid中的 RTL (aosp/1931080、b/207510535)
1.1.0 版
2022 年 2 月 9 日
發布 androidx.compose.foundation:foundation:1.1.0 和 androidx.compose.foundation:foundation-layout:1.1.0。1.1.0 版本包含以下修訂項目。
自 1.0.0 版以來的重要變更
- 穩定支援 Android 12 的過度捲動效果
- 改善觸控目標縮放功能
- 請注意,對於 Compose 1.0 版,Material 元件會展開版面配置空間,以符合 Material 無障礙功能準則對於觸控目標尺寸的規定。舉例來說,即使您將按鈕的尺寸設為小於最小尺寸 48x48 dp,系統仍會將按鈕的觸控目標擴大為這個尺寸。這樣一來,Compose Material 的行為就會與 Material Design 元件相同,在混用 Views 和 Compose 時便可確保行為一致。利用 Compose Material 元件建立使用者介面時,這項異動還能確保達到觸控目標無障礙功能的最低要求。
- 穩定支援導覽邊欄
- 將先前推出的一些實驗性 API 升級為穩定版
- 支援更新版本的 Kotlin
1.1.0-rc03 版
2022 年 1 月 26 日
發布 androidx.compose.foundation:foundation:1.1.0-rc03 和 androidx.compose.foundation:foundation-layout:1.1.0-rc03。1.1.0-rc03 版本包含以下修訂項目。
修正錯誤
- 更新為可支援 Compose Material 1.1.0-rc03
1.1.0-rc01 版
2021 年 12 月 15 日
發布了 androidx.compose.foundation:foundation:1.1.0-rc01 和 androidx.compose.foundation:foundation-layout:1.1.0-rc01。1.1.0-rc01 版本包含以下修訂項目。
修正錯誤
- 現在可將負的捲動偏移值傳遞至 LazyListState.scrollToItem()和LazyListState.animateScrollToItem()(Iceb90、b/184252837)
- 已修正會造成無障礙捲動遺漏操作的錯誤 (I7cbfb)
1.1.0-beta04 版本
2021 年 12 月 1 日
發布 androidx.compose.foundation:foundation:1.1.0-beta04 和 androidx.compose.foundation:foundation-layout:1.1.0-beta04。1.1.0-beta04 版本包含以下修訂項目。
新功能
- 已更新為與 Kotlin 1.6.0相容
API 變更
- 已去除 androidx.core.view中為空值的可能 (I7078a、b/204917439)
- 新增了實驗性 API,允許整體取用 PointerInputchange 或者檢查是否已取用 PointerInputchange。(I2e59d)
- 在文字欄位中拖曳游標或選取控點時,顯示放大鏡小工具。(I5391e、b/203781358)
修正錯誤
- 修正問題:輸入法編輯器瀏覽權限變更時,文字控點不會移動 (I25f2e)。
1.1.0-beta03 版
2021 年 11 月 17 日
發布 androidx.compose.foundation:foundation:1.1.0-beta03 和 androidx.compose.foundation:foundation-layout:1.1.0-beta03。1.1.0-beta03 版本包含以下修訂項目。
API 變更
- LazyVerticalGrid 支援水平範圍。(I7e2fa、b/176758183)
- 新增針對 Lazy 清單項目的位置添加動畫效果的實驗性功能。LazyItemScope 中新增一個名為 - Modifier.animateItemPlacement()的新輔助鍵可用。使用範例:- var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- 經由 LazyListScope.item或LazyListScope.items提供索引鍵時,這個輔助鍵能夠啟動項目重新排序的動畫。除了項目的重新排序之外,諸如排列或對齊方式改變等事件造成的其餘位置改變情形,也會以動畫呈現。(I59e7b、b/150812265)
 
- 經由 
1.1.0-beta02 版本
2021 年 11 月 3 日
發布 androidx.compose.foundation:foundation:1.1.0-beta02 和 androidx.compose.foundation:foundation-layout:1.1.0-beta02。1.1.0-beta02 版本包含以下修訂項目。
修正錯誤
- 現在,漣漪效果與其他指示元素只有在位於 Modifier.scrollable()容器內時才會延遲,不會因為按下事件而一律延遲 (Ibefe0、b/203141462)。
- 新增實驗性的 BringIntoView API,可讓您傳送要求給父項,讓父項透過捲動將項目帶入檢視區塊 (Ib918d、b/195353459)
外部貢獻
- 新增了 Modifier.pointerHoverIcon(I95f01)
1.1.0-beta01 版本
2021 年 10 月 27 日
發布 androidx.compose.foundation:foundation:1.1.0-beta01 和 androidx.compose.foundation:foundation-layout:1.1.0-beta01。1.1.0-beta01 版本包含以下修訂項目。
修正錯誤
- 新增實驗性的 BringIntoView API,可讓您傳送要求給父項,讓父項透過捲動將項目帶入檢視區塊 (Ib918d、b/195353459)
1.1.0-alpha06 版本
2021 年 10 月 13 日
發布 androidx.compose.foundation:foundation:1.1.0-alpha06 和 androidx.compose.foundation:foundation-layout:1.1.0-alpha06。1.1.0-alpha06 版本包含以下修訂項目。
API 變更
- 新增 Layout 的無子項超載,使效率提高 (Ib0d9a)
- SemanticsNodeInteraction.performSemanticsAction現在可傳回所呼叫函式位在的- SemanticsNodeInteraction。(I9e5db)
- 新增了 performScrollToNode(matcher: SemanticsMatcher),能將可捲動的容器捲動到經過特定的比對器比對為相符的內容。(Ic1cb8)
1.1.0-alpha05 版本
2021 年 9 月 29 日
發布 androidx.compose.foundation:foundation:1.1.0-alpha05 和 androidx.compose.foundation:foundation-layout:1.1.0-alpha05。查看 1.1.0-alpha05 版的修訂項。
API 變更
- 針對 PointerEventChange 新增實驗性歷史指標。(Ic1fd8、b/197553056、b/199921305)
修正錯誤
- 修正可捲動項 (無論延遲與否) 在捲動方面的無障礙支援 (I6cdb0)
1.1.0-alpha04 版本
2021 年 9 月 15 日
發布 androidx.compose.foundation:foundation:1.1.0-alpha04 和 androidx.compose.foundation:foundation-layout:1.1.0-alpha04。1.1.0-alpha04 版本包含以下修訂項目。
API 變更
- 淘汰 performGesture和GestureScope,並替換為performTouchInput和TouchInjectionScope。(Ia5f3f、b/190493367)
- 將 touchBoundsInRoot加入含有最低觸控目標尺寸的SemanticsNode,讓開發人員能確保觸控目標符合無障礙功能的最低要求 (I2e14b、b/197751214)
修正錯誤
- Android 12 裝置已新增適用延伸過度捲動。(Iccf3c、b/171682480)
1.1.0-alpha03 版
2021 年 9 月 1 日
發布 androidx.compose.foundation:foundation:1.1.0-alpha03 和 androidx.compose.foundation:foundation-layout:1.1.0-alpha03。1.1.0-alpha03 版本包含以下修訂項目。
新功能
- 更新 Compose 1.1.0-alpha03,使其依附於 Kotlin1.5.30。(I74545)
API 變更
- 已新增捲動的光暈效果。已新增實驗性 OverScrollConfiguration API,以設定過度捲動的視覺效果。輸入 null 即可關閉過度捲動效果。(I0c304、b/171682480)
- AwaitPointerEventScope 現在起具備 withTimeout() 和 withTimeoutOrNull() (I507f0、b/179239764、b/182397793)
- 新增了測試方法,以取得裁剪邊界 (I6b28e)
- 已對 ViewConfiguration 新增最小觸控目標尺寸,將其用於語意及輸入指標,確保可使用無障礙功能。(Ie861c)
1.1.0-alpha02 版
2021 年 8 月 18 日
發布 androidx.compose.foundation:foundation:1.1.0-alpha02 和 androidx.compose.foundation:foundation-layout:1.1.0-alpha02。查看 1.1.0-alpha02 版的修訂項。
API 變更
- 新增 Modifier.size和requiredSize的 DpSize 版本 (I3fc7e、b/194219828)
1.1.0-alpha01 版本
2021 年 8 月 4 日
發布 androidx.compose.foundation:foundation:1.1.0-alpha01 和 androidx.compose.foundation:foundation-layout:1.1.0-alpha01。1.1.0-alpha01 版本包含以下修訂項目。
API 變更
- 已更新利用來源和目的地矩形的 DrawScope#drawImage方法,以便使用選擇性的 FilterQuality 參數。相當適合像素風格藝術在放大時進行像素化處理之用。已更新 BitmapPainter + Image 可組合項,成為也能取用選擇性的 FilterQuality 參數 (Ie4fb0、b/180311607)
- 按下返回按鈕時,TextField 現在可清除選取項目,這與 Android EditText 的行為相符 (I3ca16、b/174173645)。
- 新增游標控點 (I07a82、b/173016579)。
修正錯誤
- 對於延遲清單和一般捲動元件的語意操作之下所執行的捲動,現在能夠呈現動畫 (Id9066、b/190742024)
外部貢獻
- LazyVerticalGrid現在可接受水平與垂直排列參數兩者。(If9c92)
1.0 版本
1.0.5 版
2021 年 11 月 3 日
發布 androidx.compose.foundation:foundation:1.0.5 和 androidx.compose.foundation:foundation-layout:1.0.5。1.0.5 版包含此連結所列的修訂項目。
修正錯誤
- 修正追蹤 derivedStateOf 例項時的異常終止問題 (aosp/1792247)。
1.0.4 版
2021 年 10 月 13 日
發布了 androidx.compose.foundation:foundation:1.0.4 和 androidx.compose.foundation:foundation-layout:1.0.4。1.0.4 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin 1.5.31
1.0.3 版
2021 年 9 月 29 日
發布 androidx.compose.foundation:foundation:1.0.3 和 androidx.compose.foundation:foundation-layout:1.0.3。1.0.3 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin 1.5.30
1.0.2 版
2021 年 9 月 1 日
發布了 androidx.compose.foundation:foundation:1.0.2 和 androidx.compose.foundation:foundation-layout:1.0.2。1.0.2 版包含此連結所列的修訂項目。
更新為支援 Compose 1.0.2 版。Compose 1.0.2 仍與 Kotlin 1.5.21 相容。
1.0.1 版
2021 年 8 月 4 日
發布 androidx.compose.foundation:foundation:1.0.1 和 androidx.compose.foundation:foundation-layout:1.0.1。1.0.1 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin 1.5.21。
1.0.0 版
2021 年 7 月 28 日
發布了 androidx.compose.foundation:foundation:1.0.0 和 androidx.compose.foundation:foundation-layout:1.0.0。查看 1.0.0 版的修訂項。
1.0.0 的主要功能
這是 Compose 的第一個穩定版本。如需詳細資訊,請參閱官方的 Compose Release 網誌!
已知問題
- 如果使用的是 Android Studio Bumblebee Canary 4 或 AGP - 7.1.0-alpha04/- 7.1.0-alpha05,則可能會遇到下列當機情形:- java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"- 如需修正這個問題,請暫時將 - build.gradle檔案中的 minSdkVersion 提高到 24 以上。Android Studio Bumblebee 和 AGP- 7.1的下一個版本會修正這個問題 (b/194289155)
1.0.0-rc02 版
2021 年 7 月 14 日
發布 androidx.compose.foundation:foundation:1.0.0-rc02 和 androidx.compose.foundation:foundation-layout:1.0.0-rc02。查看 1.0.0-rc02 版的修訂項。
- 更新一般形狀的邊框轉譯功能,解決使用固定尺寸定義的路徑所發生的問題。(aosp/1748871、b/191817116)
1.0.0-rc01 版本
2021 年 7 月 1 日
發布了 androidx.compose.foundation:foundation:1.0.0-rc01 和 androidx.compose.foundation:foundation-layout:1.0.0-rc01。查看 1.0.0-rc01 版的修訂項。
API 變更
- Canvas 現已支援 contentDescription 參數以提供無障礙功能。(Ib547c)
修正錯誤
- 停用的按鈕、資訊卡、核取方塊和整體 Modifier.clickable(enabled=false)會阻止點擊父項。(Ic2c3b、b/183908811)
1.0.0-beta09 版本
2021 年 6 月 16 日
發布 androidx.compose.foundation:foundation:1.0.0-beta09 和 androidx.compose.foundation:foundation-layout:1.0.0-beta09。1.0.0-beta09 版包含此連結所列的修訂項目。
API 變更
- 移除了 ManualFrameClock。如要控制動畫,請改用composeTestRule.mainClock。(I3c3e8、b/189951065)。
- 將列舉 Role 和 LiveRegionMode 變更為使用私人建構函式的內嵌類別 (Id1890)
- KeyboardCapitalization 會轉換為內嵌類別。(Id5a1c)
- TextOverflow 已變更為內嵌類別。(I433af)
修正錯誤
- 現在,當您為 LazyColumn/Row 項目指定不重複的按鍵時,會依照該鍵維持住捲動的位置,亦即如果在目前可見的項目之前加入/移除項目,系統會將該鍵所給定的項目維持在第一個顯示的項目。(Id263f、b/184257857)
- 目前索引鍵常數為 @ExperimentalComposeUiApi。穩定之前,使用程式碼可宣告不公開常數。(Ia5d48)
- 已將 IdlingStrategy 新增至 AndroidComposeTestRule,測試架構可用來安裝等待或達成休止的替代機制。請在測試作業開始安裝您本身的策略之前,先使用 AndroidComposeTestRule.setIdlingStrategyFactory()。(I608fa)
新增設定檔規則
這個版本將設定檔規則新增至下列撰寫模組 (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
什麼是設定檔規則?
- 程式庫的設定檔規則在位於 - src/main或同等目錄中的文字檔- baseline-prof.txt內進行指定。該檔案會每行指定一個規則,這裡的規則是指對應至程式庫方法或類別的模式。這些規則所用語法是人類可讀形式的 ART 設定檔格式的超集,使用- adb shell profman --dump-classes-and-methods ...時會用到這類格式。這些規則會採用兩種形式之一來指定方法或類別。
- 方法規則將採用以下模式: - <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
- 類別規則將採用以下模式: - <CLASS_DESCRIPTOR>
- 此處的 - <FLAGS>是- H、- S和- P之中的一或多個字元,用於指出這個方法應標記為「Hot」、「Startup」或「Post Startup」。
- <CLASS_DESCRIPTOR>是指定方法所屬的類別描述元。舉例來說,- androidx.compose.runtime.SlotTable類別的描述元是- Landroidx/compose/runtime/SlotTable;。
- <METHOD_SIGNATURE>是方法的簽名,含有該方法的名稱、參數類型和傳回類型。舉例來說,- LayoutNode上的- fun isPlaced(): Boolean方法含有- isPlaced()Z簽名。
- 這些模式可包含萬用字元 ( - **、- *和- ?),以便讓單一規則涵蓋多種方法或類別。
規則的用途
- 方法中如果帶有 - H標記,表示這個方法是「Hot」方法,應該預先完成編譯。
- 方法中如果帶有 - S標記,表示這是系統會在啟動時呼叫的方法,應該預先完成編譯,以免啟動時耗費資源處理編譯作業及解析方法。
- 方法中如果帶有 - P標記,表示這是系統在啟動之後才會呼叫的方法。
- 如果類別顯示在這個檔案中,表示系統會在啟動期間使用該類別,因此應該要事先在堆積中分配該類別,以免耗費載入類別的成本。 
運作方式
- 程式庫可以定義這些規則,並會包裝於 AAR 構件中。接著,系統會在建構包含這些構件的應用程式時,將這些規則合併起來,然後使用合併後的規則建構該應用程式專屬的精簡二進位 ART 設定檔。當該應用程式安裝在裝置上時,ART 便可以利用這個設定檔預先編譯特定應用程式子集,以提高應用程式效能,特別是首次執行的效能。請注意,這項設定不會對可偵錯的應用程式產生任何影響。
1.0.0-beta08 版
2021 年 6 月 2 日
發布了 androidx.compose.foundation:foundation:1.0.0-beta08 和 androidx.compose.foundation:foundation-layout:1.0.0-beta08。查看 1.0.0-beta08 版的修訂項。
API 變更
- NestedScrollSource 列舉已由內嵌類別取代。(Ie321b、b/187055290)
- 已將列舉用法重構為內嵌類別,以避免在新增列舉值時提供完整陳述式而造成問題(I2b5eb)
- 新增可點擊/可切換項目的輕觸逾時設定,以免在捲動/拖曳時呈現漣漪效果 (Ia2704、b/168524931)
- ContentDescription 和 Text 語意屬性不再只是單一的值,而是清單。如此即可直接合併,無需串連。同時也提供更優質的測試 API,以便善用這些變更 (Ica6bf、b/184825850)
- 已將 Modifier.focusModifier()淘汰,改為Modifier.focusTarget()(I6c860)
- KeyboardType 列舉改為內嵌類別 (I73045、b/187055290)。
- FocusState列舉已改為- FocusState介面 (Iccc1a、b/187055290)
- ImeAction 列舉已由內嵌類別取代。(I18be5、b/187055290)
- AnnotatedString.withAnnotation函式現在是 ExperimentalTextApi,而非 ExperimentalComposeApi。(I0cd0a)- 採用 TextUnitType 的 TextUnit 建構函式現在是 ExperimentalTextApi,而非 ExperimentalComposeApi。
 
- PaddingValues 現已由 @Immutable改為@Stable(I88c50)
修正錯誤
- 已修正長按非空白文字中的空白區域會異常終止的問題 (I33ab5、b/187437299)。
- 於 SelectAll 之後顯示 Toolbar (I495d9、b/185919613)
- 修正可捲動容器會在跨軸時裁剪子項的問題。如果有使用具備 Card 項目的 LazyRow,此問題之前很容易重現;現在起陰影不會被裁切 (Icb635、b/186318448)。
- 已修正使用 Modifier.combinedClickable 下做出長按動作時,漣漪/其他指標有時候會卡住的問題 (I2298c、b/186223077)
- 現在,detectDragGesures、detectVerticalGestures和detectHorizontalGestures會自動取用位置變更,不需呼叫 onDrag 回呼中的 change.consumePositionChange (I42fc4、b/185096350、b/187320697)
- 變更 Modifier.onGloballyPositioned(),系統會回報此修飾符在修飾符鏈結中的座標,而非套用所有修飾符後的版面配置座標。也就是說,修飾符的排序現在會影響系統回報的座標。(Ieb67d、b/177926591)
1.0.0-beta07 版
2021 年 5 月 18 日
發布 androidx.compose.foundation:foundation:1.0.0-beta07 和 androidx.compose.foundation:foundation-layout:1.0.0-beta07。1.0.0-beta07 版包含此連結所列的修訂項目。
API 變更
- 導入 LazyColumn/Row 的下一個可見項預先擷取邏輯 (I8a4bc、b/184940225)
- 新增了剪輯片段選取控點 (Iff80d、b/183408447)
修正錯誤
- LazyColumn/Row 現在會保留最多 2 個先前顯示項目的有效狀態 (而非加以丟棄),即使這些項目已被捲出畫面也一樣。如此一來,當我們需要組合新項目時,元件可重複使用有效的子組合,達到提升捲動效能的效果 (Ie5555)
- 移除 paintBackground。(I38660)
- 使用 DrawScope 繪製選取項目背景。(I73c61、b/186674472)
- 修正會影響 Row/Column 使用 spacedBy 排列方式配置加權子項的 beta06 迴歸問題 (Ifaf8c、b/187326588)。
1.0.0-beta06 版本
2021 年 5 月 5 日
發布了 androidx.compose.foundation:foundation:1.0.0-beta06 和 androidx.compose.foundation:foundation-layout:1.0.0-beta06。查看 1.0.0-beta06 版的修訂項。
API 變更
- 解決手勢操作衝突的問題 (I1145e)
- 新增了 CollectionInfo 和 CollectionItemInfo 無障礙 API,可為無障礙服務對集合及其項目進行標示 (Id54ef、b/180479017)
- 新增了 SemanticsActions.ScrollToIndex,可將含有索引項目的項目清單捲動到含有特定索引的項目,並新增SemanticsProperties.IndexForKey以取得包含索引鍵項目清單的項目索引。這兩個動作均是透過 LazyList 實作。- 新增了 SemanticsNodeInteraction.performScrollToIndex和SemanticsNodeInteraction.performScrollToKey,前者可將清單捲動至指定的索引,後者則能將清單捲動到含有指定鍵的項目上。(I4fe63、b/178483889、b/161584524)
 
- 新增了 
- 對 TextFieldValue.Saver 新增儲存 AnnotatedString 的支援。新增了 addTtsAnnotation 和 withAnnotation 公用函式至 AnnotatedString.Builder (I8cbdc、b/178446304)
- 已將預設 0.dp參數值新增至PaddingValues(horizontal, vertical)(I05571、b/181336792)
修正錯誤
- 含有 weight(fill = false)的 Row 和 Column 子項不再能讓父項填滿完整的主軸可用空間。(Ied94d、b/186012444、b/184355105)
1.0.0-beta05 版
2021 年 4 月 21 日
發布 androidx.compose.foundation:foundation:1.0.0-beta05 和 androidx.compose.foundation:foundation-layout:1.0.0-beta05。查看 1.0.0-beta05 版的修訂項。
API 變更
- FlingBehavior 介面現在標示為 @Stable。所有實作項目都必須遵守 @Stable合約。(I93354、b/184830577)
修正錯誤
- 修正 ACTION_SCROLL_FORWARD、ACTION_SCROLL_BACKWARD、accessibilityActionScrollLeft、accessibilityActionScrollUp、accessibilityActionScrollRight和accessibilityActionScrollDown無障礙捲動操作。現在不會捲動至可捲動項目底部,而是會依照指定方向捲動單一畫面 (Ieccb0)。
- ui-test-manifest 和 ui-tooling-data 的 AndroidManifest 檔案現在與 Android 12 相容 (I6f9de、b/184718994)
1.0.0-beta04 版
2021 年 4 月 7 日
發布了 androidx.compose.foundation:foundation:1.0.0-beta04 和 androidx.compose.foundation:foundation-layout:1.0.0-beta04。1.0.0-beta04 版包含此連結所列的修訂項目。
API 變更
- SoftwareKeyboardController 上的 hideSoftwareKeyboard 和 showSoftwareKeyboard 分別重新命名為 hide()和show()。- 為 LocalSoftwareKeyboardController 提供完整的 CompositionLocal 介面,以便設定該物件 (在測試中特別實用) (I579a6)
 
- 加入 TextOverflow.Visible。(Ic8f89)
- 移除 RowScope、ColumnScope、BoxScope、BoxWithConstraintsScope的公開例項。(I4e83e、b/181869067)
修正錯誤
- 已修正快速滑過後,位於邊緣的 LazyColumn/LazyRow項目位置擺放錯誤的問題 (Ie4d13、b/183877420)
- 在這項變更之前,本機可組合函式可根據其參數而略過。在此變更之後,系統就不會略過任何本地可組合函數。之所以要做這樣的更改,是因為本地函數通常會擷取父項參數,而略過參數是常見的錯誤原因。 - 總結來說,建議您參考以下範例: - @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }- 在此變更之前,即使 - count參數已更新,- ShowCount可組成的函數也會一律略過。不過現在已非如此。(I5648a)
1.0.0-beta03 版本
2021 年 3 月 24 日
發布 androidx.compose.foundation:foundation:1.0.0-beta03 和 androidx.compose.foundation:foundation-layout:1.0.0-beta03。查看 1.0.0-beta03 版的修訂項。
API 變更
- 淘汰 DefaultMonotonicFrameClock。現在呼叫無MonotonicFrameClock的withFrameNanos或Recomposer.runRecomposeAndApplyChanges會擲回IllegalStateException(I4eb0d)
修正錯誤
- 即使速率為 0,現在系統仍會呼叫 FlingBehavior.performFling()(I0b6e5、b/181237123)
1.0.0-beta02 版
2021 年 3 月 10 日
發布了 androidx.compose.foundation:foundation:1.0.0-beta02 和 androidx.compose.foundation:foundation-layout:1.0.0-beta02。查看 1.0.0-beta02 版的修訂項。
API 變更
- 在 LazyColumn 測量邏輯中新增多個小型最佳化項目 (Ic6889)
- 新增 LocalSoftwareKeyboardController組合本機 API,取代 TextField 的 SoftwareKeyboardController 舊介面。(I5951e、b/168778053)。
- 新增了 LocalSoftwareKeyboardController組合本機 API,以取代 TextField 中的舊 SoftwareKeyboardController 介面 (I84472、b/168778053)
修正錯誤
- 強制限制對實驗性 API 的公開使用 (I6aa29、b/174531520)
1.0.0-beta01 版
2021 年 2 月 24 日
發布 androidx.compose.foundation:foundation:1.0.0-beta01 和 androidx.compose.foundation:foundation-layout:1.0.0-beta01。1.0.0-beta01 版包含此連結所列的修訂項目。
這是 Compose 1.0.0 Beta 版的第一個版本。
API 變更
- 已將 onStart 回呼新增至 detectDragGestures(I67269、b/179995594)
- 用於依照內建函式調整大小的修飾符不再處於實驗階段。(I15744)
- 已移除 dp 判斷提示 (I798d2)
- SoftwareKeyboardController 回呼已從所有文字欄位中移除,而且很快就會替換為新的 API。(Iae869、b/168778053)
- MeasureBlock 已重新命名為 MeasurePolicy,成為趣味介面。版面配置 API 經過更新/簡化,可使用 MeasurePolicy (Icab48、b/167662468、b/156751158)。
- InteractionState已替換為- [Mutable]InteractionSource- 介面負責傳送/收集「互動」(Interaction) 事件。
- 使用 interactionSource = remember { MutableInteractionSource() },而不是將interactionState = remember { InteractionState() }傳遞給Button和Modifier.clickable()等元件。
- 應改用 InteractionSource 中的擴充功能函式,例如 InteractionSource.collectIs PressedAsState(),而不是:Interaction.Pressed in interactionState。
- 如果用途複雜,可以使用 InteractSource.interactions 來觀察互動的串流。如需詳細資訊,請參閱 InteractSource 的說明文件和範例
- (I85965、b/152525426、b/171913923、b/171710801、b/174852378)。
 
- 移除了淘汰的 LayoutCoordinate 方法,positionInParent 和 boundsInParent 請使用函式,請勿使用屬性 (I580ed、b/169874631、b/175142755)
- 為 CoreTextField 等低階文字元件的輸入工作階段建立新的 TextInputSession。(I8817f、b/177662148)
- 「位置」指標現在會顯示測距,代表子版面配置實際測量的大小。這個大小可能不受測量限制的影響。(Ib2729、b/172560206、b/172338608)。
- 新增 selectionGroup 修飾符,可為 Tab 或 RadioButton 集合加上無障礙用途標示 (Ie5c29)
- 新增 LazyListState.animateScrollToItem - 這個方法會快速捲動至清單中的特定項目。(I4bfd7) 
- ScrollableState.smoothScrollBy() 已重新命名為 animateScrollBy() LazyListState.snapToItemIndex() 已重新命名為 scrollToItem() ScrollState.smoothScrollTo() 已重新命名為 animateScrollTo() (I35ded) 
- Modifier.zoomable 已取代為 Modifier.transformable。smoothPanBy、smoothRotationBy 已新增成為功能 (Ifc32b、b/175294473)。 
- compositionLocalOf和- staticCompositionLocalOf的- defaultFactory現在是必要元素,而非選用元素。- 如未提供預設工廠,這項變更可移除非空值的潛在類型錯誤。以前,這會為非空值的類型提供空值的參照。 - 如果是可為空值類型,請考慮提供 - { null }做為預設工廠。- 除非能提供合理的預設值,否則我們不建議搭配不可為空值類型使用本機。如果沒有任何可行的預設值, - defaultFactorylambda 應擲回例外狀況。不過,擲回例外狀況代表本機取用者會有隱含的依附元件,前提是該元件不會由類型系統強制執行 (Ifbd2a)
- 已將 - Indication#createIndication()變更為- Indication#rememberUpdatedIndication(InteractionState),並自 I- ndicationInstance#drawIndication()移除- InteractionState參數。IndicationInstance 只應負責繪製視覺效果,而非回應 InteractionState 的變更,啟動動畫/寫入狀態。這些動畫和狀態寫入作業應改為在- rememberUpdatedIndication()內執行。此外,- Modifier.indication中的- indication參數也已變更為必要參數 (Ic1764、b/152525426)
- Text 操作現在會自動檢查焦點 (I13777、b/179648629) 
- 移除了 - runBlockingWithManualClock(I15cdc、b/179664814)
- Modifier.verticalScroll()/horizontalScroll() 的捲動位置現在起以 Int 表示 (I81298) 
- smoothScrollBy 和 ScrollBy 方法的套件已變更為 - androidx.compose.foundation.gestures.*(I3f7c1、b/175294473)
- FlingConfig 已重新命名為 FlingBehavior,現在起可自訂懸浮動畫,而非預先定義的 Decay。(I02b86、b/175294473) 
- 已重新命名大小修飾詞。將 Modifier.width/height/size 重新命名為 requiredWidth/requiredHeight/requiredSize。Modifier.PreferredWidth/PreferredHeight/recommendedSize 已重新命名為 width/height/size。(I5b414) 
- defaultMinSizeConstraint 已重新命名為 defaultMinSize。(I4eaae) 
- 已移除 Modifier.tapGestureFilter。請改用 - Modifier.pointerInput { detectTapGestures(...) }(I266ed、b/175294473)。
- 部分消耗已從指標輸入系統中移除。協調部分消耗的建議做法是使用 Modifier.nestedScroll (Ie9c9b)。 
- 方向已移至基礎套件。VelocirtTracker 已從 ui.gesture 移至 ui.input.pointer (Iff4a8、b/175294473) 
- 已移除 AnimationClockObservable 和子類別。AnimatedFloat 也已移除。(Icde52、b/177457083)。 
- drawerState.open() 和 drawerState.close() 現已為暫停函式。可使用 rememberCoroutineScope() 取得組合的範圍以便呼叫 (I16f60、b/175294473) 
- Provider 已重新命名為 CompositionLocalProvider - Composition 建構函式不再接受索引鍵參數,且已淘汰。
- currentCompositeKeyHash 已變成可組合的頂層屬性,而非可組合的頂層函式。
- CompositionData 和 CompositionGroup 已移至 androidx.compose.runtime.tooling 命名空間
- ComposableLambda 已成為介面而非具體類別,並且不再有類型參數。
- ComposableLambdaN 已成為介面而非具體類別,並且不再有類型參數。
- snapshotFlow 函式已移至 androidx.compose.runtime 命名空間。
- SnapshotMutationPolicy 的合併方法不再為實驗性。
- 移除 @TestOnly頂層 clearRoots 函式,因為不再需要使用。
- 已移除 keySourceInfoOf 和 resetSourceInfo 函式,因為不再需要使用。
- 已移除 Composer.collectKeySourceInformation,因為不再需要使用。
- 已移除 isJoinedKey、joinedKeyLeft 和 joinedKeyRight 方法。因為不再需要使用。
- 重新整理多個頂層 API,分別歸類到不同的檔案中。由於 Kotlin 的檔案類別語意的關係,此舉會破壞二進位檔案相容性,但不影響原始碼相容性,因此對大多數使用者而言應不成問題
- (I99b7d、b/177245490)
 
- Modifier.scrollable 經過重新設計。今後其使用 Scrollable 介面,而非 ScrollableController 類別 (I4f5a5、b/174485541、b/175294473) 
- Modifier.draggable 現在接受 DraggableState,而非簡單的 lambda。您可以透過 - rememberDraggableState { delta -> }建立狀態,以得到與之前相同的行為 (Ica70f、b/175294473)
- 新增 requiredWidth(IntrinsicSize) 和 requiredHeight(IntrinsicSize) 修飾符,以便視需要調整內建函式尺寸 (I0a6b4) 
- 移除淘汰的 - emptyContent()。請改用- {}(Idb33f、b/179432510)。
- 已刪除一些先前淘汰的 API (Ice5da、b/178633932) 
修正錯誤
- 新增 LocalSoftwareKeyboardController 組合本機 API,取代 TextField 的 SoftwareKeyboardController 舊介面 (I658b6、b/168778053)。
1.0.0-alpha12 版
2021 年 2 月 10 日
發布了 androidx.compose.foundation:foundation:1.0.0-alpha12 和 androidx.compose.foundation:foundation-layout:1.0.0-alpha12。1.0.0-alpha12 版包含此連結所列的修訂項目。
API 變更
- Modifier.pointerInput 目前規定 remember 鍵必須指出指標輸入偵測處理常式何時該重新啟動,以設定新的依附元件。(I849cd)
- 測試更新:hasText() 會檢查文字欄位中的輸入和標籤/提示/預留位置文字 (Iab803)
- 已新增 PaddingValues.Absolute 且可於接受 PaddingValue 的 API 中使用。(Ia5f30)
- onImeActionPerformed 已淘汰,請改用 KeyboardAction (If0bbd、b/179071523)
- 為更符合 ImageBitmap 和 ImageVector 的命名慣例,ImagePainter 已重新命名為與 VectorPainter 並行的 BitmapPainter。(Iba381、b/174565889)
- 已改良子字串測試 API,現在起以子字串作為引數 (Icbe78)
- 推出 InfiniteAnimationPolicy協同程式結構定義元素,這將套用於無限動畫。根據預設,系統不會安裝任何政策,除非使用ComposeTestRule執行測試。(I50ec4、b/151940543)。
- Animatable.snapTo 和 Animatable.stop 現已為暫停函式 (If4288)
- ComponentActivity.setContent 已移至 androidx.activity:activity-compose 模組中的 androidx.activity.compose.setContent。(Icf416)
- Destructuring 和 copy() 方法在幾個類別中極少使用,現已將其從中移除。(I26702、b/178659281)
- 已新增支援 LazyColumn/LazyRow 的自訂索引鍵。如此一來,項目重新排序可處理得更佳。因此在將元素重新排序、或從中間移除項目時,儲存在記憶 {} 區塊中的狀態可隨項目一起移動 - LazyColumn { items(users, key = { user -> user.id }) { ... } }
- 已將 Indication#createInstance 變更為 @Composable,並將 LocalIndication 更改為含有 Indication,而非 () -> Indication。(I5eeea、b/157150564) 
- Constraints.enforce已改為- Constraints.constrain。(I8b8ea)
- loadFontResource 已淘汰,請改用 fontResource。imageResource、loadImageResource、vectorResource 和 loadVectorResource 也已淘汰,請改用 painterResource。(I6b809) 
- 出於效能考量,ScrollAxisRange 語意現在接受傳回 Float (而非直接 Float 值) 的 lambda。(If4a35、b/178657186)。 
- 新增了 EditableText 語意,可為文字欄位的可編輯輸入文字加上無障礙標示,同時新增對應的測試方法以檢查語意 (I8e07a) 
- Modifier.clickable 現在不支援連按兩下和長按。如要達到此功能,請使用 Modifier.combinedClickable。(Iafad1) 
- toIntPx() 已重新命名為 roundToPx() (I9b7e4、b/173502290) 
- IntBounds 已重新命名為 IntRect,且該 API 已改善 (I1f6ff) 
- 已淘汰 Modifier.dragGestureFilter。請改用 - Modifier.pointerInput { detectDragGestures (...)}。或者,也可使用 Modifier.draggable 進行單一軸線拖曳 (I0ba93、b/175294473)
- 已將 Ambient 重新命名,以配合 Ambient -> CompositionLocal 的更名。Ambient 原本名為 AmbientFoo,現在已將 CompositionLocal 命名為 LocalFoo。(I2d55d) 
- 選取項目已移至 Foundation。(I7892b) 
- 如同我們先前移除 - state { 0 }可組合項且現在鼓勵使用- remember { mutableStateOf(0) }等項目,我們也將移除- savedInstanceState { 0 }可組合項。請改用- rememberSaveable { mutableStateOf(0) },如果 MutableState 中使用的類型可以存放在 Bundle 中,系統將自動儲存並還原資料。如果您之前傳遞的是自訂 Saver 物件,現在就必須使用含有- stateSaver參數的新 rememberSaveable 超載。用法形式如下:- val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26、b/177338004)
- 新增了無障礙功能密碼語意 (I231ce) 
- 新增了 ProgressBarRangeInfo.Indeterminate 以標示無障礙功能的不確定進度列 (I6fe05) 
- 動畫中的播放時間現已統一為奈秒 (If776a) 
- 已淘汰 @ComposableContract,並改用三個更具體的註解。 - @ComposableContract(restartable = false)已成為- @NonRestartableComposable- @ComposableContract(readonly = true)已成為- @ReadOnlyComposable- @ComposableContract(preventCapture = true)已成為- @DisallowComposableCalls- @ComposableContract(tracked = true)已移除。(I60a9d)
- 已淘汰 - emptyContent()和- (@Composable () -> Unit).orEmpty()公用程式,原因是這些公用程式對效能已無正面影響或價值 (I0484d)
- 重新寫入器現在可以關閉。封閉的重組工具將繼續調整,直到構成的子項協同程式完成為止。 將 Recomposer.shutDown 重新命名為「cancel」,以便與關閉對照 (Ib6d76)。 
- LazyVerticalGrid 的相關 API 會標示為實驗性 (Ia53e3、b/178519862) 
- rememberSavedInstanceState() 重新命名為 rememberSaveable() 並且移至 androidx.compose.runtime.saveable 套件。(I1366e、b/177338004) 
- RestorableStateHolder 已重新命名為 SaveableStateHolder,並移至 androidx.compose.runtime.saveable 套件。內部方法 RestorableStateProvider 已重新命名為 SaveableStateProvider。Generic 類型已移除,可直接將 Any 以索引鍵格式傳遞,不再需要使用實驗性註解。(I0902e、b/174598702)。 
- Saver、listSaver()、mapSaver()、autoSaver 已從 androidx.compose.runtime.savedinstancestate 移至 androidx.compose.runtime.saveable (I77fe6) 
- 構件 androidx:compose:runtime:runtime-saved-instance-state 已重新命名為 androidx:compose:runtime:runtime-saveable (I6dcac) 
- UI 套件中許多過時的 API 都已刪除 (I2f2dc)。 
- compose:runtime-dispatch 構件現已淘汰。目前可在 compose:runtime 中找到 MonotonicFrameClock,而 AndroidUiDispatcher 則可在 compose:ui 中找到。(Ib5c36) 
- 為了支援形狀在 rtl 方向的自動鏡射,RounderCornerShape、CutCornerShape 和 CornerBasedShape 上的參數已從 left/right 重新命名為 start/end。導入 AbsoluteRounderCornerShape 和 AbsoluteCutCornerShape,處理不需要自動鏡像功能的情況 (I61040、b/152756983) 
- canDrag 已從 Modifier.scrollable 中移除。(Id66e7、b/175294473) 
- Compose 編譯器外掛程式作為對象的 API 已經重構為採取介面,而不是具體類別。此外,介面也不會再使用類型參數。 - 這項內部變更應該不會影響原始碼相容性,但屬於二進位破壞性變更 (I3b922、b/169406779)。 
- 已移除 Modifier.scaleGestureFilter。請改用 Modifier.zoomable。或者,請使用 - Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1、b/175294473)
- AnimatedValue/Float 現已淘汰。請改用 Animatable (I71345、b/177457083) 
- 已從公用 API 移除 CoreText 和 CoreTextField
 - 已移除淘汰的 SelectionContainer 超載 (I99c19)
 
- 移除已淘汰的非暫停捲動函式 繼上次發行所作的變更後,非暫停捲動函式現已完全移除。請轉而使用同名的暫停函式。協同程式範圍可經由 rememberCoroutineScope() 取得 (I3d39c、b/178169563)。 
- 已淘汰 androidx.compose.foundation.layout.ConstraintLayout,並改用 androidx.constraintlayout.compose.ConstraintLayout。您需要在 - androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01上新增依附元件 (I87adc)。
- 已淘汰 tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 及 pressIndicaitonGestureFilter。請改用 Modifier.clickable 或 Modifier.pointerInput 搭配 DetectionTapTouchs 函式。(I6baf9、b/175294473) 
- 移除了 - Recomposer.current()。[Abstract]ComposeView 現已預設為延遲建立、以視窗為範圍的 Recomposers,並由視窗的 ViewTreeLifecycleOwner 所驅動。主機的生命週期停止時,Recomposition 和以withFrameNanos 為基礎的動畫滴答會暫停。(I38e11)。
- Recomposer.runningRecomposers 現在會提供唯讀 RecomposerInfo 的全域 StateFlow,用於在程序中觀察進行中的組合狀態。建議使用這個 API 取代已淘汰的 Recomposer.current() (If8ebe) 
1.0.0-alpha11 版本
2021 年 1 月 28 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha11 和 androidx.compose.foundation:foundation-layout:1.0.0-alpha11。1.0.0-alpha11 版包含此連結所列的修訂項目。
API 變更
- 淘汰非暫停 scrollBy、移除非暫停 scrollTo - 我們建議使用暫停函式來控制捲動,並等待捲動完成。在此轉換過程中,我們正在淘汰和/或移除這些函式的非暫停版。(Ie9ced) 
- 淘汰非暫停的 smoothScrollBy 我們現在建議使用暫停函式來控制捲動,並等待捲動完成。在此轉換過程中,我們正在淘汰這些函式的非暫停版。(I12880) 
- 已為圖片和圖示新增內容說明參數。用於為無障礙功能服務提供說明 (I2ac4c) 
- BasicTextField 收到名為「decorationBox」的新參數。可用以對文字欄位新增例如圖示、預留位置、標籤等等裝飾,和增加命中目標區面積。(I16996) 
- canDrag 參數已從 Modifier.draggable 移除 (Ic4bec、b/175294473) 
- 接受 FlingConfig 的 AnimatedFloat.fling 已經移除。請改用暫停 Animatable.animateDecay。(I4659b、b/177457083) 
- 已將 - data class從以下類別移除:- InlineTextContent
- LocaleList
- (I605c7)
 
- 您現在可以在構圖外建立可點選、可切換和可選取的項目 (I0a130、b/172938345、b/175294473) 
- 淘汰了 ScrollableColumn/Row。處理大型捲動內容時,使用 ScrollableColumn 的效率會比使用 LazyColumn 低,因為使用 LazyColumn 只能組合/測量/繪製可見元素。為避免使用者選擇效率不彰的做法,我們決定淘汰 ScrollableColumn 和 ScrollableRow,鼓勵改為使用 LazyColumn 和 LazyRow。使用者仍可決定不必使用延遲行為,直接使用類似下例的修飾符:Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b、b/170468083)。 
- 已為 LazyColumn/LazyRow/LazyVerticalGrid 的範圍新增 - items(count: Int)工廠方法。- items(items: List)和- itemsIndexed(items: List)現已成為擴充功能函式,因此在使用時必須手動匯入。新增 Arrays 的擴充功能超載:items(items: Array) 和 itemsIndexed(Array) (I803fc、b/175562574)
- 已移除淘汰的 AbsoluteArrangement。(Iffa96、b/177641870) 
- propagateMinConstraints 參數已新增至 Box,以指定收到的最小限制是否應傳遞至 Box 的內容。預設值為 False (I0125b、b/152613457)。 
修正錯誤
- 已淘汰 onCommit、onDispose 和 onActive,並改用 SideEffect 和 DisposableEffect API (If760e)
- WithConstraints 已重新作業為 BoxWithConstraints,並移至 foundation.layout。(I9420b、b/173387208)
- 已將 Font/FontFamily/Typeface 變更為 Factory 函式。 - 新增了以大寫字母開頭的工廠函式
- 淘汰了使用第一個字母小寫的舊版工廠函式
- 新的工廠函式會傳回 FontFamily 而非子類別
- 隱藏子類別的建構函式,確保子類別只能透過工廠函式建構
- 已將 Font.asFontFamily 重新命名為 Font.toFontFamily
- (I42aa7)
 
- 引入 - ComposeContentTestRule,其擴充- ComposeTestRule並且定義- setContent,後者已自- ComposeTestRule移除。新增可傳回- ComposeTestRule的工廠方法- createEmptyComposeRule(),且不會代為啟動活動。如要在測試期間啟動活動,請使用此方法,例如使用- ActivityScenario.launch(I9d782、b/174472899)
- animateAsState 現已改為 animateFooAsState,其中 Foo 是動畫處理的變數類型,例如 Float、Dp、Offset 等 (Ie7e25) 
- Density 現已成為 Arrangement 介面的接收器範圍。(I18aad) 
- TextFieldValue 可接受 AnnotatedString。然而,此為 API 變更,尚未導入多樣式文字編輯功能。 - 已從 EditingBuffer 建構函式參數中移除 initial。(I326d5)
 
- 已從 EditingBuffer 建構函式參數中移除 
- invalidate 和 compositionReference() 現已淘汰,並分別以 currentRecomposeScope 和 rememberCompositionReference 取代。(I583a8) 
- AnnotatedString 已變更為由 kotlin.CharSequence 擴充。因此 length 和 subSequence 現在是執行個體函式,而擴充功能函式則已經移除。(Iaf429) 
- Duration 和 Uptime 會改為 Long 毫秒,同時此步驟也能移除這些類別上指標輸入的依附元件。(Ia33b2、b/175142755、b/177420019) 
- RememberObserver 取代 CompositionLifecycleObserver,CompositionLifecycleObserver 現已淘汰。 - RememberObserver是用修改後的語意和重新命名方法取代的- CompositionLifecycleObserver。針對只記錄一次的物件,您可以不假思索地改為使用新的 API,這是不變的建議做法。不過,如果參照在某個組合中已有多次記錄,系統會針對每個只呼叫一次- onEnter的參照呼叫- onRemembered。如果子組合 (例如- WithConstraints和- Scaffold) 使用該物件,則會多次呼叫- onEnter,導致無法保證能穩定地單次呼叫- onEnter,因此已將其從- RememberObserver中移除。- RememberObserver新增- onAbandoned,如果- RememberObserver執行個體是從傳遞至- remember的回呼所傳回,但未記錄在組合狀態中,並因此一律不會呼叫- onRemembered,這時就會呼叫此新增項目。之所以會這樣,可能是因為例外狀況在組合完成前終止組合,或是因為產生組合的狀態已過時 (或基於其他原因不再需要使用),導致組合遭到捨棄。如果按照上述單一參照建議提供的- RememberObserver執行個體追蹤了外部資源,則- onForgotten和- onAbandoned都表示不再需要資源。如果物件正在追蹤- onRemembered中啟動的工作或配置的資源,則可以忽略- onAbandoned,因為呼叫- onRemembered之後便不會對其發出呼叫 (I02c36)。
- TransformedText.transformedText 已重新命名為 TransformedText.text - TransformedText 不再是資料類別 (Ie672a)
 
- 以下類別不再是資料類別: - AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
 
- 已移除實驗性的 monotonicFrameAnimationClockOf 方法 (Ib753f、b/170708374) 
- 淘汰全域座標方法,並建構新的視窗式座標方法。(Iee284) 
- 請使用 ImeAction.None 取代 ImeAction.NoAction - 請使用 ImeAction.Default 取代 ImeAction.Unspecified (Ie1bcc)
 
- FocusRequester.createRefs 因為可能會有所變動,目前標示為實驗性質 (I2d898、b/177000821)。 
- SemanticsPropertyReceiver.hidden 已重新命名為 invisibleToUser 並標示為 @ExperimentalComposeUiApi。AccessibilityRangeInfo 已重新命名為 ProgressBarRangeInfo。stateDescriptionRange 已重新命名為 progressBarRangeInfo。AccessibilityScrollState 已重新命名為 ScrollAxisRange。horizontalAccessibilityScrollState 已重新命名為 horizontalScrollAxisRange。verticalAccessibilityScrollState 已重新命名為 verticalScrollAxisRange (Id3148) 
- VisualTransformation 已變更為功能介面 (I3bba4) 
- 運用 TestCoroutineDispatcher 進行測試 (I532b6) 
- 已移除 PointerInputData 並修改 PointerInputChange,為其提供所有 PointerInputData 的欄位。將 PointerInputEvent 和 PointerInputEventData 改為內部使用,因為這些並未用於任何公用 API (Ifff97、b/175142755) 
- 已將 TextInputService.onStateUpdated 重新命名為 updateState (Id4853) 
- displaySize 應避免使用,因此請移除。一般建議使用 onRoot() 的尺寸,或至少使用視窗尺寸 (I62db4) 
1.0.0-alpha10 版本
2021 年 1 月 13 日
發布了 androidx.compose.foundation:foundation:1.0.0-alpha10 和 androidx.compose.foundation:foundation-layout:1.0.0-alpha10。1.0.0-alpha10 版包含此連結所列的修訂項目。
API 變更
- ImeOptions 和 KeyboardOptions 不再是資料類別 (I3c898、b/168684531)
- VisualTransformation API 的異動
- 已將 OffsetMap 重新命名為 OffsetMapping
- 已將 OffsetMap.identityOffsetMap 重新命名為 OffsetMap.Identity
- PasswordTransformation 不再是資料類別
- 已將 OffsetMapping 移至其檔案。
- (I0bdf3)
 
- EditOperations API 變更
- 已將 EditOperation 重新命名為 EditCommand
- 為 EditOperation 具體實作的指令後置字串。
- EditCommand 已不再是資料類別
- 已將 EditOperation.process 函式重新命名為 applyTo
- 已將 InputEventListener 重新命名為 InputEventCallback
- (I0a366)
 
- 已將 Velocity 修改成為具有元件部分和數學運算 (Ib0447)
- @ExperimentalTesting 已重新命名為 @ExperimentalTestApi,與類似的實驗性 API 註解保持一致 (Ia4502、b/171464963)
- 已為 LazyColumn/LazyRow 新增實驗性的 stickyHeader 方法 (I0a81d)
- Color.useOrElse() 已重新命名為 Color.takeOrElse() (Ifdcf5)
- 已淘汰 TestUiDispatcher。請改用 Dispatchers.Main (Ic171f、b/175385255)
- 將 Toggle 新增至 Foundation 的 Strings.kt (I4a5b7、b/172366489)
- 將 nativeClass 移至 ui 模組並設為內部使用。已在同等的實作中更新 nativeClass 的使用情形,改為使用「is MyClass」。(I4f734)
- 淘汰 FlowRow 和 FlowColumn。請改用自訂版面配置。(I09027)
- Modifier.focus() 和 Modifier.focusRequester() 現已淘汰。請改用 Modifier.focusModifier() 和 Modifier.focusReference()。(I75a48、b/175160751、b/175160532、b/175077829)
- 推出 SelectionRegistrar.notifySelectableChange,向 SelectManager 通知 Selectable 更新 (I6ff30、b/173215242)。
- 已將 fun Dp.isFinite()變更為val Dp.isFinite(I50e00)
- Constraints#satisfiedBy 已重新命名為 isSatisfiedBy。(I9cf5c)
- 為含有 Unspecified 常數的內嵌類別新增了 isSpecified、isUnspecified 和 useOrElse。(I93f7b、b/174310811)
修正錯誤
- 新增以協同程式為主的 API Animatable,可確保動畫之間的互斥性。新增 DecayAnimationSpec,可支援多維度衰減動畫 (I820f2、b/168014930)
- 新增了對停用和唯讀文字欄位的支援 (I35279、b/171040474、b/166478534)
- animate()現已替換為- animateAsState(),後者會傳回- State<T>而非- T。這樣系統會將無效範圍縮小至讀取 State 值的位置,因此可以提升效能 (Ib179e)。
- 新增 Semantics 角色 API,並將 Role 新增為可點選、選取和切換的 SemanticsModifier 參數。Modifier.progressSemantics 已變更,讓 Slider 也能夠使用 (I216cd)
- 現在原生 keyEvent 能透過 keyEvent.nativeKeyEvent 加以存取 (I87c57、b/173086397)
1.0.0-alpha09 版本
2020 年 12 月 16 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha09 和 androidx.compose.foundation:foundation-layout:1.0.0-alpha09。1.0.0-alpha09 版包含此連結所列的修訂項目。
API 變更
- 新增可捲動的介面 - 這可讓 ScrollState 和 LazyListState 視同共通類型,如此一來即可在這兩種類型之間實作自訂捲動功能。 - 這也會將 smoothScrollBy 移至 Scrollable 上的擴充功能函式,以利用此功能性。(I2153b) 
- 新增 LazyVerticalGrid (I17267、b/162213211) 
- 淘汰 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。請改用 LazyColumn 和 LazyRow (I5b48c) 
- 如要暫停游標指標輸入 API,請將 RiverPointerInputScope 重新命名為 AwaitPointerEventScope,並將 HandlePointerInput() 重新命名為 awaitPointerEventScope() (Idf0a1、b/175142755) 
- 已新增 LazyListState.layoutInfo,可列出目前顯示項目的尺寸和偏移清單 (If8678、b/170472532) 
- 已移除 ExperimentPointerInput 註解 (Ia7a24) 
- 已為 TextFields 新增 InteractionState 的支援。(I61d91) 
- 新增 LazyColumn/Row 的 reverseLayout 參數。參數為 - true時,代表項目是由下往上組合,- LazyListState.firstVisibleItemIndex == 0則表示第一個項目位於底部 (I552ae、b/166589935)。
- 已為 LazyColumn 新增 verticalArrangement 參數。已為 LazyRow 新增 horizontalArrangement 參數。如果沒有足夠的項目可填滿最小尺寸時,即可利用 Arrangement 在項目之間加入間距,以及指定項目的排列方式。(Icf79a、b/170394300) 
- detectMultitouchGestures 現在起使用一個回呼,並搭配合併的 centroid、pan、zoom 及 rotate 參數。(Ie6e1c) 
- 已將 ContentDrawScope 移至 ui-graphics 模組,以便與 DrawScope 搭配使用。(Iee043、b/173832789) 
修正錯誤
- 現在,偏移修飾符中的 lambda 會傳回 IntOffset,而非 Float (Ic9ee5、b/174137212、b/174146755)。
- 已從公用 API 中移除 SlotTable、SlotReader 和 SlotWriter。這些項目先前被標示為 InternalInternalAPI。現在是撰寫模組的內部。 - 為了取代 ui-tooling API 而新增 CompositionData 和 CompositionGroup,用於擷取組合資訊。這些是公開工具,但不適合在 ui-tooling API 外使用,因為這些工具會提供 ui-tooling API 解讀的原始資訊 (I31a9c) 
- 提供繪圖環境大小資訊時,重構 ShaderBrush 以延遲建立著色器的執行個體。這適合用於定義在組合時構成可組合項完整繪圖邊界的漸層,而不必實作自訂的 DrawModifier 實作方式。 - 已淘汰漸層函式建構函式 API,並採用 Gradient 物件的工廠方法 (I511fc、b/173066799) 
- 已淘汰 Modifier.focusObserver。請改用 Modifier.onFocusChanged 或 Modifier.onFocusEvent (I30f17、b/168511863、b/168511484) 
- AutoFill API 現為實驗性 API,必須啟用 (I0a1ec) 
- 新增解構宣告,可建立 FocusRequester 例項 (I35d84、b/174817008)。 
- 已分別將 accessibilityLabel 和 accessibilityValue 重新命名為 contentDescription 和 stateDescription。(I250f2) 
- 引入 SelectionRegistrar 的數種新函式,並將 onPositionChange 重新命名為 notifyPositionChange (Ifbaf7) 
- 已將 AndroidOwner 歸為內部 (Ibcad0、b/170296980) 
- 新建 infiniteRepeatable 函式,可用於建立 InfiniteRepeatableSpec (I668e5) 
- Applier介面經過變更,將樹狀結構建構程序從由上往下簡化為由下往上。- insert()方法已重新命名為- insertTopDown()。- 加入新的方法 - insertBottomUp()。- 套用器會根據效能表現選用 - insertTopDown()或- insertBottomUp(),將節點插入目前編輯的樹狀結構。- 對某些樹狀結構 (例如 - LayoutNode和- View) 而言,由下往上的建構方式會比由上往下更有效率。在這項變更之前,如要實作由下而上建構作業,您需要先插入一些堆疊,並必須將其複製到每個需進行由下而上效能建構作業的套用器。這項變更實施後,- Applier會覆寫- insertBottomUp()以由下往上建構樹狀結構,而覆寫- insertTopDown()則會由上往下建構樹狀結構。(Icbdc2)
- 新增了 painterResource API 以從光柵化素材格式 (例如 PNG) 或 VectorDrawable 處理不透明地載入 Painter 物件。取用者不必再事先判斷資產類型,並可呼叫此方法,取得用於 Image 可組合項或 Painter 修飾符的 Painter 物件 (I2c703、b/173818471)。 
- 新增 buildAnnotatedString 工廠函式,可供建構 AnnotatedString。淘汰了 annotatedString 建構工具函式。(Idfe0b)。 
1.0.0-alpha08 版本
2020 年 12 月 2 日
發布了 androidx.compose.foundation:foundation:1.0.0-alpha08 和 androidx.compose.foundation:foundation-layout:1.0.0-alpha08。1.0.0-alpha08 版包含此連結所列的修訂項目。
API 變更
- 已從 CoreTextField中移除maxLines參數。如果您要依照行數限制文字欄位的高度,請改用BasicTextField(Iec002)
- 已將 await*TouchSlop()方法變更為不偵測指標向下,並且重新命名為*OrCancellation。同時也不再需要使用orientationLock參數。(Ie96e1)
- 新增了可組合 lambda 參數在於命名和位置的 lint 檢查,以檢查是否與 Compose 準則一致。另外也根據 Lint 檢查和指引,將部分使用 children做為結尾 lambda 名稱的 API 遷移至content(Iec48e)
- 已將 foundation:foundation-textAPI 移至foundation:foundation套件結構維持不變 (Id3eb2)
- 新增多點觸控手勢偵測工具,包括偵測旋轉、縮放和平移的協助程式。(Ic459d)
- 新增拖曳手勢偵測工具的暫停指標輸入 API,包括方向鎖定在內。(Icef25)
- 已將 VectorAsset 重新命名為 ImageVector。根據 API 委員會準則,已將 VectorAsset 移動至 Builder 並對其重新命名,使其成為 ImageVector 的內部類別。新增了 VectorAssetBuilder 的 typealias,以便連結至 ImageVector.Builder,使其彼此相容。(Icfdc8)
- 已將 ImageAsset 和相關方法重新命名為 ImageBitmap。(Ia2d99)
- 已將 Foundation 語意屬性移至 ui (I6f05c)
- 新增協同程式為主的捲動 API: - 新增 LazyListState.snapToItem 和 LazyListState.smoothScrollBy,以及較低階的 API 捲動控制 API。這些 API 會提供可控制捲動操作的暫停介面,這個介面會等到捲動操作完成後再傳回。(Ie5642) 
- 已將 singeLine 參數新增至 BasicTextField、TextField 和 OutdashTextField。如要將文字欄位設為可水平捲動的單一行,請將這個參數設為 true (I57004、b/168187755)。 
- 使用新的暫停指標輸入,新增了輕觸、輕觸兩下、長按和輕按指示的手勢偵測工具。我們還新增了一些公用程式,讓開發人員更容易編寫自己的手勢偵測工具。(I00807) 
- Modifier.focusable 有需要新增至 Foundation。這項工具可讓您為元件新增可聚焦的行為,並採用正確的語意和無障礙功能 (I41eb9、b/152525426、b/162865824) 
- 先前淘汰的 API 已移除:Border 已移除,請改用 BorderStroke。已移除 Modifier.drawBorder,請改用 Modifier.border。已移除 Modifier.gravity,請改用 Modifier.align。已移除 Stack,請改用 Box (I32c2b、b/172470874) 
- AbsoluteArrangement 已重新命名為 Arrangement.Absolute。(If26f2) 
修正錯誤
- 已將 DrawModifier API 從 androidx.compose.ui 套件移至 androidx.compose.ui.draw 套件。已建立 DrawModifierDeprecated.kt 檔案,藉此加入 typealiases/helper 方法,協助從淘汰的 API 改用目前的 API (Id6044、b/173834241)。
- 已將 Modifier.drawLayer 重新命名為 Modifier.graphicsLayer,同時也根據 API 委員會的意見回饋,將相關類別更新為 GraphicsLayer。(I0bd29、b/173834241)
- 已從 SubcomposeLayout 宣告中移除 <T>,現在不必指定類型即可使用該項目 (Ib60c8)
- 將 PointerInputData 的運作時間和位置欄位設定成不可為空值。(Id468a)
- MaterialTheme 現可為選取控點和選取背景設定正確的顏色。非 Material 應用程式可以手動使用 AmbientTextSelectionColors 自訂用於選取項目的顏色 (I1e6f4、b/139320372、b/139320907)
- Box 的對齊參數已重新命名為 contentAlignment。(I2c957)
- offsetPx 修飾符已重新命名為 offset,且現已改用 lambda 參數,而非 State (Ic3021、b/173594846)
- 新增了 WindowManager.isWindowFocused 以檢查主機視窗是否為焦點,並新增提供 onWindowFocusChanged 回呼的 WindowFocusObserver。(I53b2a、b/170932874)
- 已將 resetInput 參數新增至 TextInputService#onStateUpdated (I3e8f5、b/172239032、b/171860947)
- 已更新 TextFieldValue API- 將 TextFieldValue 組合設為唯讀
- 已移除因無效選取範圍所擲回的例外狀況 (I4a675、b/172239032)
 
- 依照其他 Ambient 和 Compose API 準則,淘汰以 Ambient作為字尾所命名的 Ambient,並改為以 Ambient 作為字首的新屬性。(I33440)
- 新增了 Android Typeface 包裝函式。您可以透過 typeface函式 (例如typeface(Typeface.DEFAULT)) 載入 Android 字體。並將typefaceFromFontFamily()重新命名為typeface()(I52ab7)
- 新增了 lint 檢查功能,以檢查 Modifier 工廠是否在內部使用 androidx.compose.ui.composed {},而非標示為@Composable。(I3c4bc)
- 新增 Lint 檢查,方便檢驗修飾符工廠函式是否依其擴充功能定義,確保兩者能順利鏈結。(I07981)
- 語意引數 mergeAllDescendant 已重新命名為 mergeDescendant。(Ib6250)
- 測試中的時間控制項 (TestAnimationClock 及其用例) 處於實驗階段 (I6ef86、b/171378521)
- 移除舊的 ui-test 模組及其虛設常式 (I3a7cb)
- TextUnit.Inherit 重新命名為 TextUnit.Unspecified,以與其他單元一致。(Ifce19)
- 更新了 Alignment 介面,並使其可正常運作。(I46a07、b/172311734)
- 已將 foundation:foundation-text模組合併為foundation:foundation(Idac0f)
- 淘汰 place(Offset) 和 placeRelative(Offset)。請改用含有 int 偏移的超載 (I4c5e7)
- id已重新命名為- LayoutIdParentData的- layoutId。- Measurable.id已重新命名為- Measurable.layoutId(Iadbcb、b/172449643)
1.0.0-alpha07 版
2020 年 11 月 11 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha07、androidx.compose.foundation:foundation-layout:1.0.0-alpha07 和 androidx.compose.foundation:foundation-text:1.0.0-alpha07。查看 1.0.0-alpha07 版的修訂項。
API 變更
- 比照 Modifier.fillMaxSize[Width|Height],我們現在支援在LazyColumn/Row範圍內的Modifier.fillParentMaxSize[Width|Height]中使用分數 (I797e2、b/166586426)
- 已從公用 API 中移除 KeyboardOptions.toImeOptions。(Ic2e45)
- 淘汰 Foundation 的 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor。請改用 Material 程式庫中可提供的新版本。對於非 Material 應用程式,您應建立自己的設計系統專屬主題設定環境,並在自己的元件中使用 (I74acc、b/172067770)
- 已淘汰 foundation.Text,並替換為 material.Text。如要瞭解不使用主題值的無預設立場基本文字 API,請參閱 androidx.compose.foundation.BasicText (If64cb)
- 已將 maxLine 新增至 TextField (Ib2a5b)
- 更新 TextField 以接受 KeyboardOption (Ida7f3)
- 新增了於 TextField 中使用的 KeyboardOption (I9ca32)
- 新增 BasicText。這是一個在設計方面不預設立場的文字 API,與 BasicTextField 平行。(I28268)
- 移除了 ExperimentalLazyDsl 註解。現在不必新增 @OptIn 即可使用 LazyColumn/LazyRow (Idab7a、b/166584730)
- 已淘汰 BaseTextField。請改用 BasicTextField。(I896eb)
- BasicTextField 已新增為 CoreTextField 與 BaseTextField 的替代項目 (Id4cea)
- 移除已淘汰的 LazyColumnItems/LazyRowItems (I1d8a8)
- 已移除依照內建函式的測量值調整大小的已淘汰可組合項。(I18537、b/171811496)
- relativePaddingFrom 已重新命名為 paddingFrom。新增 paddingFromBaseline 修飾符,方便您指定版面配置邊界到文字基準線的距離 (I0440a、b/170633813)
- 在 aspectRatio 修飾符中新增 matchHeightConstraintsFirst 參數,可用於指定讓修飾符先依高度限制調整尺寸,再試著調整相應寬度。(Ie7c43、b/155290593)
- 已移除淘汰的 DpConstraint。(I87884、b/171702471)
修正錯誤
- 已引入 ScaleFactor 內嵌類別以表示水平與垂直軸相互獨立的縮放比例係數,以支援縮放比例不統一的用途。- 已將 ComputeScaleFactor 方法新增至 ContentScale
- 新增了 ContentScale.FillBounds 以執行非統一的資源調度,藉此將 srcs 邊界延伸至完全符合目的地。
- 新增了運算子方法,以便使用大小參數計算 ScaleFactor 參數。
- (Ic96a6、b/172291582)
 
- captureToBitmap 已移至 captureToImage。(I86385)
- 將 CoreText 標示為 @InternalTextApi。請改用 BasicText (I6aaeb)。
- 將 KeyboardOptions 重新命名為 ImeOptions (I82f36)
- 已將 KeyboardType 和 ImeAction 移入 KeyboardOptions (I910ce)
- CoreTextField 已標示為 @InternalTextApi。請改用 BasicTextField (Ie2469)
- 已移除 ExperimentalSubcomposeLayoutApi 註解。現在可以在不新增 @OptIn 的情況下使用 SubcomposeLayout (I708ad)
- 推出 ui-test-junit4 模組 (Ib91f8)
- 已更新 Icon API 以採用 Color.Unspecified 做為可能的色調顏色,在沒有 ColorFilter 的情況下能以指定素材或繪圖工具繪圖。先前嘗試略過繪製含有 Color.Unspecified 的色調,導致系統使用透明色繪製色調,結果完全沒有顯示任何色彩。(I049e2、b/171624632)
- 已將 MeasureResult 從 MeasureScope 移出 (Ibf96d、b/171184002)
- 將數個版面配置相關符號從 androidx.compose.ui 移至 androidx.compose.layout.ui (I0fa98、b/170475424)
- 已將 androidx.ui.test 移至 androidx.compose.ui.test (I9ffdb)
- 已將 FirstBaseline 和 LastBaseline 移至 androidx.compose.ui.layout 套件 (Ied2e7)
- 新增不使用回呼的 SelectionContainer (Ibfadb)
- 在 SelectionContainer 中為 SelectionHandle 的 Position 新增 Test。(Ie93db)
- 新增了鍵盤自動更正輸入法編輯器選項 (I57b8d)
1.0.0-alpha06 版本
2020 年 10 月 28 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha06、androidx.compose.foundation:foundation-layout:1.0.0-alpha06 和 androidx.compose.foundation:foundation-text:1.0.0-alpha06。查看 1.0.0-alpha06 版的修訂項。
API 變更
- androidx.compose.foundation.Icon 已移至 androidx.compose.material.Icon。如果不想使用 Material 程式庫,也可以將 Image 元件/Modifier.paint() 與 Painter 搭配使用 (I9f622)
- 已將 engagementState 新增至 Modifier.scrollable、ScrollableColumn 和 LazyColumnFor (I81566、b/169509805)
- alignByBaseline 已新增至 RowScope,alignWithSiblings 重新命名為 alignBy (I06503、b/170628732)
- 將 Box 實作為內嵌函式。(Ibce0c、b/155056091)
- 已將 maxLines 新增至 CoreTextField (Ibee58、b/143687793)
- 已將 softwrap 新增至 CoreTextField。(I21a4b)
修正錯誤
- 淘汰 VectorPainter 並改用 rememberVectorPainter,以更能指出可組合項 API 於內部利用「記憶」使得資料在撰寫之間持續存在。(Ifda43)
- 在 ComposeTestRule 中啟用轉場功能,並從 ComposeTestRule 中移除啟用閃爍游標的選項。(If0de3)
- 已對 CoreTextField 新增單行鍵盤選項 (I72e6d)
- 已將 Radius API 重新命名為 CornerRadius,以便完善表達於 Compose 中的使用方式。更新說明文件,指出負圓角半徑的限制取值範圍已設為零 (I130c7、b/168762961)
- 新增在經組合的輔助鍵之中指定檢查器相關資訊的功能 (Idee08、b/163494569)
- 新增了 KeyboardCapitalization 輸入法編輯器選項 (I8ac38)
- 修正 Rtl 控點位置。(I6e1e0)
- 破壞性變更:由於指標事件中能夠變更的值應該只有取用資料,因此將 PointerInputFilter.onPointerEvent(...) 的傳回值移除。現在您不必從 PointerInputFilter.onPointerEvent(...) 傳回資料,可直接改變 PointerEvents 傳入的取用資料。(I6acd0)
- 將 SelectAll 選項新增至選單 (Ief02b)
1.0.0-alpha05 版本
2020 年 10 月 14 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha05、androidx.compose.foundation:foundation-layout:1.0.0-alpha05 和 androidx.compose.foundation:foundation-text:1.0.0-alpha05。查看 1.0.0-alpha05 版的修訂項。
API 變更
- CoreTextField 現已支援游標功能 (Id23aa)
- 已淘汰 contentColor() 和 currentTextStyle() API 並分別改為 AmbientContentColor 和 AmbientTextStyle 環境。與搭配使用其他環境時一樣,您可以對環境屬性使用 - .current,藉此存取目前的值。這項變更的用意是要維持一致性,避免採用多種方式來完成同一件事。此外,部分環境屬性已重新命名,以便清楚描述其用途,如下所示:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
 
修正錯誤
- 為將內嵌類別 sentinel 值標準化的一部分,將 Color.Unset 重新命名為 Color.Unspecified,使其與其他內嵌類別一致 (I97611、b/169797763)
- 新增了 Copy/Paste/Cut 等無障礙功能操作 (I6db4f)
- 引入 TextOverflow.None。溢位為 None 時,Text 不會再處理溢位,而是向 LayoutNode 回報實際尺寸 (I175c9、b/158830170)
- 將 size.Unspecified 的參數更新為 Float.NaN,而非 Float.POSITIVE_INFINITY。更新了 Painter 實作方式,以檢查 Size.Unspecified 和非有限大小 (I95a7e)
- 新增了 Paging Compose 模組和分頁整合 (Ib85da)
- 請修改 LazyListScope 以接收可為空的值 (I1765b)
- OnPositionedModifier 已重新命名為 OnGloballyPositionedModifier,onPositioned() 重新命名為 onGloballyPositioned()。(I587e8、b/169083903)
- 新增了 LazyColumn/Row 的範例 (Idc16d)
- 修正項目和 itemsIndexed 方法,以允許使用 emptyList (I06647)
- 新增指定檢查器資訊的 DSL (Ic9a22)
- 將 LongPress 移到文字中。(Iff2bc)
- 停用 Text 中的 Selection 和 Demo。(Ie7e97)
- 支援無障礙功能的 AnnotatedString 轉換至 SpannableString (Ief907)
- 移除了 PointerInputFilter.onPointerInput(...)。並應改用PointerInputFilter.onPointerEvent(...)。(I6f04a)
1.0.0-alpha04 版本
2020 年 10 月 1 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha04、androidx.compose.foundation:foundation-layout:1.0.0-alpha04 和 androidx.compose.foundation:foundation-text:1.0.0-alpha04。1.0.0-alpha04 版包含以下修訂項目。
API 變更
- Stack 已重新命名為 Box。原先存在的 foundation.Box 會淘汰,改用 compose.foundation.layout 中的新版 Box。Box 的新行為模式為當其擁有多個子項時,會將子項一個一個向上堆疊,這一點與之前的 Box 不同,之前的行為與 Column 較為類似 (I94893、b/167680279)。
- 淘汰了 Box 裝飾參數。如果要為您的方框加上裝飾/邊框間距,請改用 Modifier (Modifier.background、Modifier.border、Modifier.padding) (Ibae92、b/167680279)
- 新增 LazyListState 類別。可用以觀察及控制 LazyRow 和 LazyColumn 元件的捲動位置。您可以使用 rememberLazyListState() 建立執行個體,並傳遞到元件的狀態參數。目前,可在此初始版本中觀察第一個顯示的項目和偏移。(Ic7cb7、b/159307669)
- 現在起,Lazy 清單的位置和捲動偏移可在 Activity 重新建立的全程當中儲存和還原 (Ie045f、b/166589058)
- 新增長按語意語意操作 (I6281b、b/156468846)
- 已新增 MutatorMutex 公用程式,用來長時間維持一個共用狀態的更動子,並且依照優先順序取消衝突的更動子 (I3f975)
- 已使用 @VisibleForTesting 為 rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled 和 textInputServiceFactory 加上註解,使其成為內部 API,並隱藏其 kdoc (I554eb、b/168308412)
- 已從有 String 輸入的 Text 移除 inlineContent 參數。由於 inlineContent 必須搭配 AnnotatedString,因此不會用到。(Ief403)
- 已移除淘汰的自訂 Arrangement API (Ic576d、b/168297922、b/168297923)
- 將 unbounded參數新增至 wrapContentSize 修飾符,後者能夠測量最大限制為無限的版面配置元素。(I77951、b/158559319)
- 我們已阻止靜態匯入版面配置範圍的內容 (例如 RowScopes 中的 alignWithSiblings)請改用明確範圍替代項:with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }(I216be、b/166760797)。
修正錯誤
- 更新了多個圖形 API
- 更新縮放和旋轉功能的轉換 API,改用單一 Offset 參數代表樞紐座標,而非使用 DrawScope 和 DrawTransform 中 x/y 座標的個別浮點參數
- 移除了 Rect.expandToInclude 和 Rect.join 方法
- 更新 Radius 說明文件,一併介紹橢圓形和卵形
- 新增說明文件,指出無須直接呼叫內嵌 Radius 類別的公開建構函式,而是應該透過函式建構函式將 Radius 物件例項化
- 移除了用於查詢 topRight、bottomRight、bottomCenter 等的 roundRect API
- 淘汰了 Rect.shift,改用 Rect.translate
- 移除了 RoundRect.grow 和 Rect.shrink API
- RoundRect.outerRect 已重新命名為 Rect.boundingRect
- 移除了 RoundRect.middleRect/tallMiddleRect/wideMiddleRect 和 Rect.isStadium 方法
- 已將 RoundRect.longestSide 重新命名為 RoundRect.maxDimension
- 已將 RoundRect.shortestSide 重新命名為 RoundRect.minDimension
- 已將 RoundRect.center 變更為屬性,而非函式
- 將 RoundRect 建構函式更新為使用 Radius 屬性,而非 x/y 半徑值的個別參數
- 移除了 Size API,假設其為原點 0,0 的矩形
- 在 Radius 中新增銷毀 API
- 將各種 RoundRect 擴充功能函式移轉為屬性
- (I8f5c7、b/168762961)
 
- 藉由不在每次捲動時皆執行不必要的重整,達到 LazyColumnFor/LazyRowFor 捲動的效能最佳化 (I64f65、b/168293643、b/167972292、b/165028371)
- 已修正捲動後 LazyColumnFor/LazyRowFor 的異常終止,接著變更項目並且實作先前顯示的項目移除之後的自動向上捲動,使得再也不會在末端顯示空白間隙 (I220ab、b/161480164、b/167855468)
- 不再允許在同方向的容器 (例如 ScrollableContainer 和 LazyColumnFor) 中嵌套可捲動項目。未曾支援此做法之外,也會破壞組合 LazyColumnFor 項目時的快速滑過和所有延遲 (I6e101)
- 更新多個圖形 API- 更新了具有限定範圍轉換方法的 DrawScope API,指出轉換作業僅適用於回呼內部,在叫用回呼後就會移除
- 已將 clipPath 說明文件更新為參照路徑,而不是圓角矩形
- 已固定說明文件在 clipPath 中正確的參數
- 已將 DrawScope.drawCanvas 重新命名為 DrawIntoCanvas 和已移除的大小參數
- 將 inset 方法中的 dx/dy 參數重命名為水平和垂直
- 新增插邊超載,為 4 個邊界全都提供相同的插邊值
- 移除了 inset 方法的說明文件,指出插邊將會套用至所有 4 邊
- 更新了 Rect 類別的說明文件
- 更新了關於 Rect 參數的評論以符合 kdoc 樣式
- 移除了 Rect.join 和 Rect.expandToInclude
- 已為 Rect.translate(offset) 和已淘汰的 Rect.shift 建立超載。
- (If086a、b/167737376)
 
- 將 AccessibilityScrollState 新增至語意屬性 (Ifeda9)
- 將 TextRange 設為內嵌,以避免建立物件 (Id034b)
- 已移除 ParagraphConstraint。寬度現在會直接傳遞至 Paragraph (Ica712)
1.0.0-alpha03 版本
2020 年 9 月 16 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha03、androidx.compose.foundation:foundation-layout:1.0.0-alpha03 和 androidx.compose.foundation:foundation-text:1.0.0-alpha03。查看 1.0.0-alpha03 版的修訂項。
API 變更
- InnerPadding 已重新命名為 PaddingValues (I195f1、b/167389171)
- 版面配置 API 中用到 gravity 的部分已統一改成 align 或 alignment (I2421a、b/164077038)
- 已在 Stack 上新增對齊參數,以便可指定所有 Stack 子項的預設對齊方式 (Ie80ca、b/164085265)
修正錯誤
- 已淘汰 DpConstraint 和使用該項目的 API (I90cdb、b/167389835)
- widthIn的- minWidth和- maxWidth參數已重新命名為- min和- max。- preferredWidthIn、- heightIn和- preferredHeightIn也比照完成同樣的處理。(I0e5e1、b/167389544)
- 已在 ComposeTestRule 中加入 onNode 和其他全域方法,因為目前的全域方法即將淘汰。(Ieae36)
- 已修正 GestureScope 的尺寸和位置的計算方式,以免造成滑動手勢無效等其他問題 (Iaf358、b/166589947)
- 已將 createAndroidComposeRule和AndroidInputDispatcher從androidx.ui.test.android移至androidx.ui.test(Idef08,b/164060572)
1.0.0-alpha02 版
2020 年 9 月 2 日
發布了 androidx.compose.foundation:foundation:1.0.0-alpha02、androidx.compose.foundation:foundation-layout:1.0.0-alpha02 和 androidx.compose.foundation:foundation-text:1.0.0-alpha02。1.0.0-alpha02 版本包含以下修訂項目。
修正錯誤
- TestUiDispatcher 標示為實驗性 (Iae99d、b/161247083)
- 新增了 - ManualFrameClock.hasAwaiters以查看是否有任何內容正在等待該時鐘的框架;新增- runWithManualClock用來在執行需要 ManualFrameClock 的測試時取代- runBlocking;並新增- TestUiDispatcher.Main,供您輕鬆存取測試中的主要 UI 發送器。- 例如: - @Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
1.0.0-alpha01 版本
2020 年 8 月 26 日
發布 androidx.compose.foundation:foundation:1.0.0-alpha01、androidx.compose.foundation:foundation-layout:1.0.0-alpha01 和 androidx.compose.foundation:foundation-text:1.0.0-alpha01。1.0.0-alpha01 版本包含以下修訂項目。
0.1.0-dev 版
0.1.0-dev17 版
2020 年 8 月 19 日
發布了 androidx.compose.foundation:foundation:0.1.0-dev17、androidx.compose.foundation:foundation-layout:0.1.0-dev17 和 androidx.compose.foundation:foundation-text:0.1.0-dev17。查看 0.1.0-dev17 版的修訂項。
API 變更
- 新增 Row 和 Column 的 spacedBy Arrangement,使版面配置子項能依固定間距定位;另也新增 aligned Arrangment,使 Row/Column 中的版面配置子項可根據 Alignment 方法彼此對齊放置。淘汰之前的 Arrangement.Vertical#arrange 和 Arrangement.Horizontal#arrange 方法,未來也將停止支援編寫自訂的 Arrangement。(I6733d、b/161985975)
- 將 Offset 改為內嵌類別 (Iaec70)
- 已從 TextField 移除 onFocusChanged 回呼。請改用 Modifier.focusObserver。(I51089、b/161297615)
- 已淘汰 Modifier.drawBorder。請改用 Modifier.border。Borde 資料類別已由 BorderStroke 取代 (I4257d、b/158160576)
- 移除了 VerticalScroller 和 HorizontalScroller。請改用捲動式資料欄/資料列。已移除 Modifier.drawBackground。請使用 Modifier.background (I73b0d、b/163019183)
- 自 LazyItemScope 移除標示為淘汰的 fillMax* 修飾符,因為對於非 LazyColumnFor 直接子項的項目而言,其增加了正確新增這些修飾符的難度 (Ifa78d)
- 已將 LazyColumn/LazyRow 實作新增為 DSL (I93cc6)
- 現已將 Constraint 設為內嵌類別 (I88736)
- 利用 fillMaxWidth、fillMaxHeight 和 fillMaxSize 輔助鍵,新增將版面配置的大小設定為可用空間的一部分的功能。(I945bb、b/161562591)
修正錯誤
- 已將 modifier 參數加入至 SelectionContainer (I4aada、b/161487952)
- 已將 mergePolicy lambda 加入至 SemanticsPropertyKey。這可讓您定義 mergeAllDescendants 語意合併的自訂政策。根據預設政策,如果有父項值,就會直接使用父項值;如果沒有,則使用子項值 (Iaf6c4、b/161979921)
- 已將 PlacementScope.placeAbsolute()重新命名為PlacementScope.place(),原先的PlacementScope.place()則重新命名為PlacementScope.placeRelative()。因此,PlacementScope.place()方法不再以由右至左的結構定義自動鏡射位置。如果需要這個方法,請改用PlacementScope.placeRelative()。(I873ac、b/162916675)
- 移除淘汰的 FilledTextField 元件。請改用 TextField,取得 Filled 文字欄位的 Material Design 實作方式 (I5e889)
- 已將 backgroundColor 參數加入至 LinearProgressIndicator,並從 CircularProgressIndicator 移除內部邊框間距。新增 ProgressIndicatorConstants.DefaultProgressAnimationSpec,可在各值之間以動畫表示進度時,做為預設的 AnimationSpec (If38b5、b/161809914、b/161804677)
- state { ... }可組合項現已淘汰,改為明確呼叫- remember { mutableStateOf(...) }以求一目瞭然。這樣可以減少管理狀態所需的整體 API 介面和概念數量,且符合類別屬性委派作業的- by mutableStateOf()模式。(Ia5727)
- 將 RRect 重新命名為 RoundRect,以更符合 Compose 命名模式 建立了與 RRect 類似的函式建構函式,並淘汰了 RRect 函式建構函式 (I5d325)
- 已移除 onChildPositioned 和 OnChildPositionedModifier。開發人員應改在子版面配置上使用 onPositioned 和 OnPositionedModifier。(I4522e、b/162109766)
- 已將 IntSize 設為內嵌類別 (I2bf42)
- 長按空白區即可編輯。(Ib1e5b)
- 隱藏輕觸文字後的 FloatingToolbar。(If4525)
- 隱藏更新選取項目時的 FloatingToolbar。(I8444c)
- Blur 時取消選取。(I781a2)
0.1.0-dev16 版本
2020 年 8 月 5 日
發布 androidx.compose.foundation:foundation:0.1.0-dev16、androidx.compose.foundation:foundation-layout:0.1.0-dev16 和 androidx.compose.foundation:foundation-text:0.1.0-dev16。查看 0.1.0-dev16 版的修訂項。
API 變更
- 已為 Lazy 清單的 itemContent 參數新增 LazyItemScope。這可提供修飾符來填滿父項大小上限,解決以下用途問題:項目應填滿可視區域,但因該項目的測量限制為無限,導致一般 Modifier.fillMaxSize() 無法運作 (Ibd3b2、b/162248854)。
- 將對話方塊移至使用者介面 (I47fa6)
- 新增了 LazyColumnForIndexed/LazyRowForIndexed 此 LazyColumnFor/LazyRowFor 版本,可提供 itemCallback 中的 index 與 item。如果除了現有項目還需瞭解目前的索引,這一點十分實用。(I65ff3)
- 已將 Modifier.deternimateProgress 重新命名為 Modifier.progressSemantics (I9c0b4)
- 已將 LazyColumnItem 重新命名為 LazyColumnFor。已將 LazyRowItem 重新命名為 LazyRowFor (I84f84)
- 新增一些標記/註解,以達到最佳做法 (I66b20)
- foundation.shape.corner 套件已扁平化為 foundation.share (I46491、b/161887429)
- 新增了 LazyRowItems/LazyColumnItems 的跨軸重力參數。LazyRowItems/LazyColumnItems 現在起可支援納入內容的行為模式。(Ib39fc)
- 已將 ZoomableState 重新命名為 ZoomableController。現已加入對 smoothScale 的自訂曲線支援。新增了 enabled和onZoomStarted功能 (If8b8f)
- 已將 Material FilledTextField 重新命名為 TextField,並將基礎的 TextField 重新命名為 BaseTextField,以便於發現及使用最簡單的所需 API (Ia6242、b/155482676)
- 已移除先前淘汰的 AdapterList。請改用 LazyColumnItems (I12b9b)
- 將 Modifier.drawBackground 重新命名為 Modifier.background (I13677)
- 已移除舊的 ConstraintLayout DSL。已將 ConstraintSet2 重新命名為 ConstraintSet (If58d1、b/162450908)
- 新增了 Modifier.corOffset() 和 Modifier.absoluteOffsetPx()。絕對偏移輔助鍵與偏移輔助鍵不同,不會在由右至左的結構定義中自動鏡射 (I3aa21)
- Row和- Column現為內嵌函式,可大幅降低使用這些項目的負荷。(I75c10)
修正錯誤
- 解決廣泛的 API 問題 (I077bc)
- 移除未使用的 OffsetBase 介面
- 對齊 Offset 和 IntOffset 類別,以便採用一致的 API 介面
- 將 IntOffset.Origin 重新命名為 IntOffset.Zero,使其與 Offset API 一致
- 已將 nativeCanvas 方法從 Canvas 介面移出,以支援取用端建立自己的 Canvas 執行個體
- 建立了虛設常式 EmptyCanvas 類別,藉此將 DrawScope 重構為非空值參數 (而不是 lateinit),並確保該欄位不可為空值
- 已將 ClipOp 列舉重新命名為 Pascal 案件
- 已將 FilterQuality 列舉重新命名為 Pascal 案件
- 已將 StrokeJOIN 列舉重新命名為 Pascal 案件
- 已將 PointMode 列舉重新命名為 Pascal 案件
- 已將 PaintingStyle 列舉重新命名為 Pascal 案件
- 已將 PathFillType 列舉重新命名為 Pascal 案件
- 已將 StrokeCap 列舉重新命名為 Pascal 案件
- 更新 DrawCache 實作方式,不再使用 lateinit 參數
- 更新 DrawScope,不再讓 fillPaint 和 strokePaint 內部參數使用延遲委派功能
- 更新 Image 可組合項,避免使用 Box 並降低負擔
- 將 Outline 類別更新為包含 @Immutable 註解
- 將 PathNode 更新為包含各個路徑指示的 @Immutable 註解
- 由於撰寫作業已經完成,更新向量分子,移除等式的多餘性檢查
- 淘汰 Rect 隨附建構函式方法,改用函式建構函式
- 已使用 @Immutable 和 @Stable API 更新 Brush 類別和函式建構函式
- 已將 VertexMode 列舉更新為 PascalCase
- 更新 DrawScope selectPaint 方法,有條件地覆寫 Paint 的筆劃參數 (如果這些項目有所變更)
- 已更新 Size 以新增解構 API、將 UnspecifiedSize 重新命名為 Unspecified,並移除不使用的方法
 
- 新增了 MonotonicFrameAnimationClock,可用來將 MonotonicFrameClock 作為 AnimationClockObservable,可消除以協同程式為主的新版時鐘與仍使用回呼型舊版時鐘的 API 之間的差異。 - MonotonicFrameClock 等同於 ManualAnimationClock,現在為 ManualFrameClock。(I111c7、b/161247083) 
- 移除了 - SemanticsNodeInteraction.performPartialGesture。請改用- SemanticsNodeInteraction.performGesture(Id9b62)
- 已將 - SemanticsNodeInteraction.getBoundsInRoot()重新命名為- SemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf、b/161336532)
- 更新了支援版面配置由右至左的 API。新增了 LayoutDirectionAmbient,可用於讀取及變更版面配置方向。移除了 Modifier.rtl 和 Modifier.ltr。(I080b3)。 
- 淘汰 Modifier.plus,請改用 Modifier.then。「Then」能更明確地指出排序,同時也禁止輸入會破壞鏈結及降低可讀性的 - Modifier.padding().background() + anotherModifier(Iedd58,b/161529964)
- 新增了 - isFocused()和- isNotFocused()SemanticsMatcher。(I0b760)
- 已新增 RemeasurementModifier。可讓使用者同步性地重新測量版面配置。由於重新測量/版面重新配置程序會自動執行,通常不會用到這個項目,但在捲動時會在 LazyColumnItem 中用到 (I5f331、b/160791058) 
- 依照最新準則,isSystemInDarkTheme 現在一律會考量全系統的深色主題設定,在 Q 之前忽略省電狀態。(I0c10c) 
- 已淘汰 OnChildPositioned。請改用子項的 OnPositioned (I87f95、b/162109766) 
- 已將 AndroidComposeTestRule 重新命名為 createAndroidComposeRule。(I70aaf) 
- 新增無障礙操作,以取得 TextLayoutResult (I9d6e6) 
0.1.0-dev15 版本
2020 年 7 月 22 日
發布了 androidx.compose.foundation:foundation:0.1.0-dev15、androidx.compose.foundation:foundation-layout:0.1.0-dev15 和 androidx.compose.foundation:foundation-text:0.1.0-dev15。0.1.0-dev15 版本包含以下修訂項目。
如要使用 0.1.0-dev15 版的 Compose,您需要完成以下動作:
依附元件更新
- 如要使用 0.1.0-dev15版的 Compose,您必須依據上方「宣告依附元件」一節所示的新程式碼片段更新依附元件。
API 變更
- 類似於 ScrollableColumn/ScrollableRow 中的新參數,LazyColumnItems/LazyRowItem 現在也有 contentPadding 參數,能在裁剪內容後在後方增添邊框間距,這是光憑輔助鍵參數所無法做到。此外,還能僅在第一個項目之前/最後一個項目之後增添一個間距 (Ibc24e)
- 已將文字欄位中的 onFocusChange 回呼重新命名為 onFocusChanged (Ida4a1)
- VerticalScroller 和 HoriziontalScroller 現已淘汰,使用 ScrollableColumn 和 ScrollableRow,透過資料欄/資料列行為和參數或使用內建功能,或是對元素使用 Modifier.verticalScroll 和 Modifier.horizontalScroll。同樣地,ScrollerPosition 也已淘汰,並改用 ScrollState (I400ce、b/157225838、b/149460415、b/154105299)
- 已將 Modifier.draggable 和 Modifier.scrollable API 重新作業。因為 DragDirection 被移除以有利於 Orientation。可捲動狀態已被簡化。ScrollableState 已重新命名為 ScrollableController (Iab63c、b/149460415)
- 單一值的語意屬性現在起採用呼叫樣式。舉例來說,「semantics { hidden = true }」現在會寫為:semantics { hidden() }(Ic1afd、b/145951226、b/145955412)。
- RoundedCornerShape 和 CutCornerShape 所用的 Corner 大小現在起可以大於 50% (Id2340、b/160400213)
- 已將 Image 可組合項的預設 ContentScale 參數從 Inside 改為 Fit。之所以這麼做,是考量如果版面配置的尺寸大於繪圖工具內建函式的尺寸,同時又要維持顯示比例時,即需要具備將基礎 Painter 放大的行為模式。當內建函式的尺寸只會用在運算可組合項的尺寸時,此種行為模式更符合需為 Image 提供固定尺寸、同時不影響預設行為的預期。(I40ae3、b/159838006)
- 在頂層 API 中使用 AnimationSpec (而非 AnimationBuilder) 來釐清靜態動畫規格的概念 - 透過在建立如 tween、spring 等 AnimationSpec 時,不再需要使用 lambda 的做法來改善 DSL 的轉換。而是直接採用建構函式參數。- 改善使用 AnimationSpec 開啟建構函式 (而非仰賴建構工具) 的整體操作簡易性 - 將 KeyFrame 和 Tween 的時間與延遲時間變更為 Int。這可免除不必要的類型層級轉換和方法超載 (支援 Long 和 Int)。(Ica0b4)
- 已移除 Clickable。請使用 Modifier.clickable (I84bdf)
- 新增了 LazyRowItem - 類比於 LazyColumnItem 的水平捲動 (Ibbcf7)
- 引入低階無狀態動畫 API。這些 API (I63bf7)
- 淘汰 androidx.ui.foundation.TextFieldValue 和 androidx.ui.input.EditorValue。使用該類型的 TextField、FilledTextField 和 CoreTextField 可組合項也已淘汰。請改用 androidx.ui.input.TextFieldValue (I4066d,b/155211005)
- 已將所使用的 IntPx 取代為 Int。已將 IntPxPosition 改用 IntOffset 取代。將 IntPxSize 替換成 IntSize。(Ib7b44)
- androidx.ui.foundation.shape.RectangleShape 已移除;請用 androidx.ui.graphics.RectangleShape (I94939、b/154507984)
- 為了將呈現大小調整資訊所用的類別數量合併,應將 Size 類別的用法標準化,勿使用 PxSize。這樣就能使用內嵌類別,利用一個長整數封裝 2 個浮點值,呈現以浮點表示的寬度和高度 (Ic0191)
- 為了整合用於呈現地點資訊的資訊類別數量,請將偏移量類別 (而非 PxPosition) 的用量標準化。這樣就能使用內嵌類別,利用一個經度封裝 2 個浮點型數值,呈現以浮點數表示的 x 和 y 偏移量。(I3ad98)
- 已針對雙指撥動縮放的功能新增 Modifier.zoomable (Id5d63)
- 已淘汰 Toggleable 元件。請改用 Modifier.toggleable (I35220、b/157642842)
- 已淘汰 MutuallyExclusiveSetItem。請改用 Modifier.selectable。(I02b47、b/157642842)
- TestTag 現已淘汰,請改用 Modifier.testTag。(If5110、b/157173105)
- 在 Text 中新增之前漏掉的 fontWeight 參數 (I56937)
- 我們進行了大規模的重構工作,包括將各種撰寫類別中所使用的 Px 類別改為只使用 Dp 和基本類型來處理像素參數 (I19d02)
- VerticalScroller 提供立即可用的欄。HorizontalScroller 現在提供立即可用的列。(Ieca5d、b/157020670)
- 我們進行了大規模重構工作,包括將各種撰寫類別中所使用的 Px 類別改為只使用 Dp 和基本類型來處理像素參數 (Iede0b)
- 已將 Modifier.indication 新增至 Foundation 套件。能用來在自訂可互動元素上顯示按下/拖曳/其他指標 (I8425f、b/155287131)
- 現已支援反向捲動的 VerticalScroller 和 HorizontalScroller 是 isReversed,在 ScrollerPosition 上設定 (I953bd)
- 支援在文字版面配置中加入可組合項 (I1373c)
- 已將 CanvasScope 實作項目整合,現在只有 DrawScope 和 ContentDrawScope。已將 CanvasScope 重新命名為 DrawScope。已更新 DrawScope 來實作 Density 介面,並提供 LayoutDirection。刪除 ContentDrawScope 中的 DrawScope 子類別。Painter 和 PainterModifier 已更新為不再自行維護 RTL 屬性,因為 DrawScope 已有此功能,不必手動設定 (I1798e)
- 已移除淘汰的 DrawBackground API,改用 Modifier 上的 drawBackground 擴充 API。重構色彩、筆刷與繪製 drawBackground 的實作,減少程式碼路徑,並移除建立 Modifier 做為部分組成元件的要求。(I0343a)
- 已更新較高層級的 Composer API,將原有顯示 Canvas 改為顯示 CanvasScope。如此一來,取用者就不必維護自己的 Paint 物件。如果取用者仍要求 Canvas 存取權,則可以使用 drawCanvas 擴充功能方法,這種方法可提供回呼,透過基礎 Canvas 發出繪圖指令 (I80afd)。
- HorizontalScroller 和 VerticalScroller 現在可用既存執行個體狀態還原捲動位置 (Ia0fae、b/155075048)
- 移除了 FocusManagerAmbient。使用 FocusModifier.requestFocus 取得專注力。(Ic4826)
- 表格版面配置已暫時移除,至我們以重新整理的 API 提供使用為止。(Id88a7)
- 已建立 CanvasScope API,可納入 Canvas 物件以顯示無狀態的宣告式繪圖 API 途徑。變形作業侷限在其本身的接收器範圍內,大小調整資訊的範圍也對應插邊的邊界。不需要讓取用端保有自己的 Paint 狀態物件來設定繪圖作業。 - 新增 CanvasScopeSample 並更新試用版應用程式,加入宣告式圖形示範 (Ifd86d) 
- 已移除 ColoredRect。請改用含有 drawBackground 輔助鍵的 Box (I983c7、b/152753731) 
- 在 TextField 中新增游標色彩自訂 (I6e33f) 
- 現在可以使用 onTextInputStarted 回呼提供的 SoftwareKeyboardController 來隱藏/顯示螢幕鍵盤 (I8dc44、b/151860051) 
- 現在以類似以下的方式將 TextFieldValue 與 TextField 搭配使用,能在活動重建之後繼續存在: - var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce、b/155075724)
- 將常用的參數加至 Text()。如果您目前是建立本機的文字樣式來傳遞這些少數的參數 (例如 - Text(style = TextStyle(textAlign = TextAlign.Center))),現在可直接提供參數:- Text(textAlign = TextAlign.Center)(I82768)
- 已將 CoreTextField/TextField focusIdentifier 參數改為 FocusNode,以便與聚焦子系統整合 (I7ea48) 
- TextField 更新 - 在水平維度上,會占滿允許的所有空間 (Ib08df、b/154638552) 
- 新增了 InteractionState 和 Interaction,使得更便於建構能夠回應 UI 狀態改變 (例如按下和拖曳) 的元件 (Icfe25、b/152525426) 
- 已將 RectangleShape 從 androidx.ui.foundation.shape.* 移至 androidx.ui.graphics* (Ia74d5、b/154507984) 
- 將 API 中所有使用到且可為空的 Color 改為不可為空值,並改為使用 Color.Unset (Iabaa7) 
- TextField API 更新 - 已將 onFocus 和 onBlur 回呼合併至帶有參數的單一 onFocusChange(Boolean) 回呼 (I66cd3) 
- 已將 ScaleFit 重新命名為 ContentScale。已將 ContentScale 從 ui-graphics 移至 ui-core 模組,以與 Alignment API 位於同一模組。將 FillMaxDimension 重新命名為 Crop。將 FillMinDimension 重新命名為 Fit。將 Fit 重新命名為 Inside,使其更加符合 ImageView.ScaleType 的同等項目。新增說明文件,說明 Crop 與 Alignment.Center 的組合所達到的結果與 ImageView.ScaleType.CENTER_CROP 相同,與 Alignment.Center 搭配使用的 Fit 所達到的結果與 ImageView.ScaleType.FIT_CENTER 相同。搭配 Alignment.Center 使用的Inside 所達到的結果與 ImageView.ScaleType.CENTER_INSIDE 相同 (I45f09、b/152842521) 
- 移除 ProvideContentColor,請改為直接搭配 - Providers使用 ContentColorAmbient (Iee942)
- 新增色彩參數至文字,以便無需手動與主題中所提供的樣式合併,即可覆寫文字樣式的色彩。(I41a66) 
- 改善 DrawModifier API: - 已設定 Draw() ContentDrawScope 的接收器範圍
- 移除了 Draw() 的所有參數
- DrawScope 的介面與之前的 CanvasScope 介面相同
- ContentDrawScope 含有 DrawContent() 方法 (Ibaced、b/152919067)
 
- ColoredRect 已淘汰,請改用 - Box(Modifier.preferredSize(width, height).drawBackground(color))。(I499fa、b/152753731)
- 形狀主題系統的安裝會根據 Material 設計規格進行更新。您現在可以提供大多數元件所使用的小型、中型和大型形狀 (Ifb4d1) 
- 已將 Modifier 加號運算子取代為 Factory 擴充功能函式 (I225e4) 
- Draggable 已移為修飾符 (Id9b16、b/151959544) 
- 已將 androidx.ui.core 中的 - Text移至 androidx.ui.foundation 套件 (I87ce5)
- 將 - enabled參數加到 Checkbox、Switch 和 Toggleable (I41c16)
- Ripple 現已改名為 Modifier。Clickable 尚未轉換期間,其建議用法是 - Clickable(onClick = { ... }, modifier = ripple())(Ie5200、b/151331852、b/150060763)
- 新增了 VectorPainter API 以替向量圖形取代現有的子撰寫 API。子組合的結果是 VectorPainter 物件,而非 DrawModifier。已淘汰先前的 DrawVector 元件,改用 VectorPainter。 - 將 - Image(Painter)API 重新命名為- PaintBox(Painter)建立 Vector 可組合項,其行為類似 Image 可組合項,除了其含有 VectorAsset 而非 ImageAsset (I9af9a、b/149030271)
- 已建立 Image 可組合項,不但可在畫面上繪製指定的 ImageAsset,也能處理大小調整/版面配置。這個可組合項也支援繪製任何任意的 Painter 執行個體,可依照內建函式的尺寸,也支援指定的固定尺寸或最小尺寸 (Ibcc8f) 
- Button、FloatingActionButton 和 Clickable 現在有獨立的 - enabled參數。Button 上的部分參數已重新命名或重新排序 (I54b5a)
- 已將 Image 重新命名為 ImageAsset 以使參與內容的版面配置與繪製所用的 Image 資料與即將產生的 Image 可組合項之間的差異更容易區分。 - 在 android.graphics.Bitmap 上建立擴充方法 - Bitmap.asImageAsset()以建立 ImageAsset 執行個體,適合用來將傳統的 Android 應用程式開發與撰寫架構相結合。(Id5bbd)
- 移除 DrawImage 可組合項。使用 ImagePainter 在現有版面配置上繪製圖像,或用 SimpleImage 引入產生的 Image (I595e1、b/149827027) 
- Stack 元件可支援由右往左的方向性 (Ic9e00) 
- 已新增 Icon、IconButton 和 IconToggleButton,並移除 AppBarIcon。您現在可以用 IconButton 直接取代 AppBarIcon 的現有使用情況,而且現在應具有正確的觸控目標。請參閱相關使用資訊的範例,並查看能直接搭配這些元件使用的 Material 圖示。(I96849) 
- 移除 DrawShape 可組合項。請改用 DrawBackground 修飾符 (I7ceb2) 
- 新增了 AdapterList 這個捲動清單元件,僅撰寫及佈置顯示的項目。目前已知的問題包括,這個元件僅限直向,且無法完全處理子項的所有變更。(Ib351b) 
- 已新增 Scrollable 元件,可用以建立自訂的 Scroller/List (I5fd37) 
- 已將 background 重新命名為 DrawBackground,並成為預設加以記憶 (Ia0bd3) 
- 為 Box 新增邊框間距、框線、形狀和背景參數 (I05027、b/148147281) 
- 新增了 Canvas 元件。這個可組合項會占用某個大小 (由使用者所提供),可供使用 CanvasScope 進行繪圖 (I0d622) 
- 將 - Border輔助鍵重新命名為- DrawBorder(I8ffcc)
- 新增 Box 元件,可用於合併版面配置及繪製常用功能。(I6e2a7) 
- Scroller 現在會表現出 Android 原生的快速滑過動作行為。(I922af、b/147493715) 
- 已取代 DrawBorder 並改用 Border 輔助鍵 (Id335a) 
- Modifier.tag 已重新命名為 Modifier.layoutId,以避免與 Modifier.testTag 混淆。(I995f0) 
- 在建立 ConstraintLayout 準則時的 percent 參數已重新命名為 fraction。(Ida2db) 
- 新增了支援 ConstraintLayout 阻隔線的外邊距。(I47ffe) 
- 已修正對 ConstraintLayout 的 RTL 支援。新增了 RTL 無感知 API。(I3b1c7) 
- 已為 ConstraintLayout 新增 DSL。詳情請參閱範例。(Icaa9a) 
- 新增了 @ExperimentalLayout 註解。ConstraintLayout、FlowRow 和 FlowColumn 現已加入該標記,以標示其 API 即將改變 (I412a8) 
- 已新增 - Modifier.padding(InnerPadding)(I94985、b/157133803)
- 已移除 Row 和 Column 中淘汰的 RowAlign、ColumnAlign (If60d4、b/155858731)。 
- 已移除淘汰的 LayoutTag(),請改用 Modifier.tag()移除了已淘汰的 Modifier.matchParent(),請改用 Modifier.matchParentSize()。(If8044) 
- 新增了 offsetPx 版面配置輔助鍵,可用來定義 px 中的 (動態) offset。(I5af57) 
- AlignmentLineOffset 可組合項已淘汰,請改用 relativePaddingFrom() 輔助鍵。CenterAlignmentLine 可組合項也已移除 (I60107) 
- 新增了 defaultMinSizeConstraint 版面配置輔助鍵,成為僅限收到的對應限制為未指定時,才對包裝的版面配置設定大小限制 (最小限制為 0,最大限制為無限)。(I311ea、b/150460257)。 
- 已移除 Container。請改用 Box (Ibbc2b、b/151407926) 
- 已移除淘汰的 LayoutWidth/Height/Size 輔助鍵。(Ib0bc1) 
- 已為 offset 輔助鍵新增預設參數值。(I37f06) 
- 新增對稱式邊框間距修飾符。(I39840) 
- 移除淘汰的 LayoutAspectRatio 修飾符。(I65a74) 
- 移除淘汰的 LayoutAlign 修飾符。(I10877) 
- 修正寬度和高度修飾符的錯誤,以防納入的版面配置在沒有相反軸限制的情況下受到測量。(I210b8、b/154797971)。 
- 已分別將 verticalGravity 和 horizontalGravity 參數新增至 Row 和 Column。(I7dc5a) 
- 已更新 wrapContentWidth 和 wrapContentHeight 必須使用垂直或水平對齊,而非使用任何對齊。引力調整器已更新為接受垂直或水平對齊。更新 Row、Column 和 Stack,藉此支援自訂的持續對齊方式 (Ib0728) 
- 已將 Alignment 設為能以任意值加以實例化。新增了 1D Alignment。(Ia0c05)。 
- 已將 EdgeInset 重新命名為 InnerPadding。而將 Material Buttons 的 innerPadding 參數重新命名為 paddding。(I66165) 
- alignToSibling 現在可使用 Measured 而非 Placeable。(I5788d) 
- 新增用於調整內建函式測量資料大小的修飾符,並淘汰相同用途的元件。(I8295d) 
- 支援自訂 ConstraintLayout 子項的尺寸 (Idb1a5) 
- 移除了淘汰的 Wrap 和 Center 可組合項。(I29e23) 
- 新增一個可定義版面配置修飾符的新 API LayoutModifier2;淘汰 LayoutModifier (If32ac) 
- RowScope 和 ColumnScope 構件現在已可從 Row 和 Column 之外存取。(I3a641) 
- 已淘汰 Container。請改用 Box。(I675ce、b/151407926)。 
- 新增 LayoutOffset 修飾符,可移動版面配置的位置 (I0b8a3) 
- 初步提供對 Compose 版面配置中 Rtl 的支援 (Ia5519) 
- 更新 LayoutAlign,使其不再填滿可用空間 (I2b14f) 
- 移除 AspectRatio 可組合項,改用修飾符。刪除過時的 FlexColumn、FlexRow 可組合項和 Spacing 修飾符 (Iec8a7) 
- 移除 Row 和 Column 的 LayoutInflexible 修飾符 (I0d820) 
- 實作拖曳選取控點,以變更 TextField 的選取項目。(I27032) 
- 針對 TextField 選取實作 LongPressAndDrag。(I17919) 
修正錯誤
- 淘汰了 FocusModifier,改用 Modifier.focus、Modifier.focusRequester、Modifier.focusObserver。淘汰 FocusState 和 FocusDetailedState,改用 FocusState2 (I46919、b/160822875、b/160922136)
- runOnIdleCompose已重新命名為- runOnIdle(I83607)
- 將多個測試 API 重新命名,提供更直覺化的使用體驗。將所有 FindXYZ API 都重新命名為 onNodeXYZ。將所有 doXYZ API 都重新命名為 performanceXYZ。(I7f164)
- 移除先前淘汰的 Modifier.ripple。Clickable 現在使用波紋做為預設指標 (如果您在應用程式中設定了 MaterialTheme {}),因此在大多數情況下,您只需使用 Clickable,即可免費取得分享指示。如要自訂漣漪效果的顏色/大小/邊界參數,可以手動建立 RippleIndication,並將其做為指示參數傳遞給 Clickable (I663b2、b/155375067)。
- 已移除過時的尺寸測試 API。(Iba0a0)
- 已將 LayoutNode 設為實驗性 API (I4f2e9)
- 於全 Compose 實作第 1 版捲動方向的鎖定。(I1ce7a、b/150289741)。
- Popup、Dialog 和 Menu 現在起承襲結構定義的 MaterialTheme (Ia3665、b/156527485)
- 從 Layout() 函式的測量區塊移除版面配置方向參數。不過,可透過測量範圍物件,在回呼中使用版面配置的方向 (Ic7d9d)
- 新增 StaticArrangement - 允許在 Row 中排列子項,而不使用 RTL 中的自動鏡射 (I3a1df)
- 已淘汰 @Untracked 註解。請改用 @ComposableContract(tracked=false) (Id211e)
- 在這項異動之前,Compose 編譯器外掛程式會顯著攔截對 @Composable 函式內建構函式的呼叫 (如果有) (I5205a、b/158123804)
- 新增 viewModel()元件,以便建立或建立 View Model 的方式與類似「活動」或「片段」工具 (I5fdd1) 的運作方式相似。
- 已將 Radius 類別重構為內嵌類別。移除具有預設參數的函式建立方法,並使用預設參數讓半徑 Y 軸與必要 X 軸半徑參數的 y 軸相符。 - 將 DrawScope.drawRoundRect 更新為使用單一 Radius 參數,而非取用沿著 x 和 y 軸的半徑的 2 個獨立浮點值 (I46d1b) 
- 我們進行了大規模重構工作,包括將各種撰寫類別中所使用的 Px 類別改為只使用 Dp 和基本類型來處理像素參數。Px 類別也已完整刪除 (I3ff33) 
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I086f4) 
- 我們進行了大規模重構工作,其中一部分是將在各種組合中使用 Px 類別來處理像素參數,更換成只使用 Dp 和基本類型 (Id3434) 
- 我們進行了大規模重構工作,包括將各種撰寫類別中所使用的 Px 類別改為只使用 Dp 和基本類型來處理像素參數 (I97a5a) 
- TextField 的游標有閃爍的動畫 (Id10a7) 
- 部分手勢不再需要傳遞 GestureToken (Id7ae5) 
- 我們進行了大規模重構工作,包括將各種撰寫類別中所使用的 Px 類別改為只使用 Dp 和基本類型來處理像素參數 (I57bff) 
- 我們已取消淘汰 Modifier.semantics,並允許使用高階元件 (I4cfdc) 
- AnnotatedString.Builder.addAnnotationString 重新命名為 addStringAnnotation。(I5059e) 
- 更新了 Alignment API 並新增了絕對對齊支援 (在 Rtl 環境中不會自動提供鏡像) (I38cd3) 
- Layout 和 LayoutModifier 子項可用不同的版面配置方向加以測量。(Ibd731) 
- 為 ImagePainter 新增其他可用的 rect 參數,以支援繪製一個底下 ImageAsset 的子區 (I0ea9e) 
- 修正移除項目時在 AOSPList 中的異常終止問題 (Ic64b0、b/153195921) 
- 對於您置入 activity.setContent { } 區塊內的第一個版面配置,我們改變了測量方式。先前是強制填滿整個活動畫面,現在的行為模式有如您將版面配置放進 Stack 內:可以比畫面小,這時會放置在左上角。如果想保留原本的行為模式,可以對版面配置套用 Modifier.fillMaxSize() (Ie88a7、b/153453714) 
- ui-text-compose 模組重新命名為 ui-text。ui-text 現在包含 CoreText 和 CoreTextField 元件 (Ib7d47) 
- ui-text 模組已重新命名為 ui-text-core (I57dec) 
- 將 ui-framework/CoreText、CoreTextField 可組合項移至 ui-text-pose 下。建議您在專案中納入 ui-text-compose (I32042)。 
- runOnIdleCompose和- runOnUiThread現在是全域函式,不是 ComposeTestRule 上的方法 (Icbe8f)。
- [Mutable]State 屬性委派運算子已移至擴充功能,以支援 Kotlin 1.4 屬性委派最佳化。呼叫端必須新增匯入作業才能繼續使用 - by state { ... }或- by mutableStateOf(...)(I5312c)
- DrawLayerModifier 和 drawLayer() 現在會將 clipToBounds 和 clipToOutline 預設為 false (I0eb8b、b/152810850) 
- 已將 LayoutResult 重新命名為 MeasureResult。(Id8c68) 
- 淘汰了 Center 可組合項。應改用 LayoutSize.Fill + LayoutAnchor.Center 修飾符,或將其替換為已套用適當修飾符的 Box 或 Stack 可組合項 (Idf5e0) 
- 已將 LayoutFlex 重新命名為 LayoutWeight。將 tight 參數重新命名為 fill。(If4738) 
- DrawVector 已從一般的可組合函式改為會傳回 Modifier drawVector(),將向量繪製成版面配置的背景。(I7b8e0) 
- 將可組合函式 Clip 替換為修飾符 drawClip()。當只需要將圖層邊界裁剪為矩形時,DrawdClupToBounds 是相當實用的修飾符。(If28eb) 
- DrawShadow 可組合函式已更換為 DrawShadow() 修飾符。陰影現已繪製成 LayerModifier 的一部分。(I0317a) 
- androidx.compose.ViewComposer 已移至 androidx.ui.node.UiComposer。此外,我們移除了 androidx.compose.Emittable,它對 ComponentNode 來說是多餘的。androidx.compose.ViewAdapters 已移除。系統已不再支援這些項目。Compose.composeInto 已淘汰,請改用 - setContent或- setViewContent。Compose.disposeComposition 已淘汰,改用- setContent傳回的- Composition上的- dispose方法。 androidx.compose.Compose.subcomposeInto 已移至 androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt 已重新命名為 ComponentNode#insertAt ComponentNode#emitRemoveAt 已重新命名為 ComponentNode#removeAt ComponentNode#emitMode 已重新命名為 ComponentNode#move (Idef00)
- 淘汰了 Wrap 可組合項。這可以替換成 LayoutAnchor 修飾符或 Stack 可組合項 (Ib237f) 
- 使版面配置方向可以從上層布局節點套用到子項。新增了版面配置方向修飾符 (I3d955) 
- Painter.toModifier 重新命名為 Painter.asModifier,因為新建立的 Modifier 所參照的原始 Painter 能在多個 Modifier 執行個體之間共用 (I7195b) 
- 支援 LayoutPadding 輔助鍵中由右到左的方向 (I9e8da) 
- Density 和 DensityScope 已合併至單一介面。現在可以使用 DensityAmbient.current 取代 EnvironmentDensity()。勿用 withDensity(density),請用 with(density) (I11cb1) 
- 移除 ValueHolder 類別。已重新建構 AnimatedValue 和 AnimatedFloat 類別,使動畫值欄位變得抽象,讓子類別可以監看數值更新。 - 為 AnimatedValue、AnimatedFloat 等新增了模型類別。
- 新增了一組輕量的 @Composable API,用來在不同的值之間進行動畫。
- (I79530)
 
- 對環境 API 做出破壞性變更。詳情請參閱記錄檔和 - Ambient<T>說明文件 (I4c7ee、b/143769776)
- 從 Placeable#get(AlignmentLine) 傳回的 Alignment 行 Int 位置現在起不可為空值。如果缺少查詢的對齊線,就會傳回 AlignmentLine.Unspecified (I896c5、b/158134875)。 
- 修正重組時造成異常終止的 ConstraintLayout 錯誤 (Ibee5a、b/158164341)。 
- 變更 WithConstraints 結尾的 lambda API。我們現在以接收器範圍取代原本的兩個參數,除了 constraints 與 layoutDirection 之外,還提供 Dp 中的 minWidth、maxWidth、minHeight 和 maxHeight 屬性 (I91b9a、b/149979702) 
- 已將 LayoutModifier2 重新命名為 LayoutModifier。(Id29f3) 
- Layout 和 LayoutModifier2 中的內建測量函式現在設有 IntrinsicMeasureScope 接收器,可提供附有隱性傳播版面配置方向的內建函式查詢 API (Id9945) 
- 淘汰 LayoutDirectionAmbient。如要讀取依照語言代碼所定義的版面配置方向,請使用 ConfigurationAmbient 上的 localeLayoutDirection (I851b1) 
- 已為 LayoutCoordinates 新增 positionInParent 和 boundsInParent。(Icacdd、b/152735784) 
- 淘汰 ParentData 可組合項。您應建立可實作 ParentDataModifier 介面的修飾符;如果只想為版面配置子項加上標記,方便在測量區塊中加以識別,則請使用 LayoutTag 修飾符 (I51368、b/150953183) 
- 新增 OnPositionedModifier 和 OnChildPositionedModifier 以取代 OnPositioned 和 OnChildPositioned 可組合函式 (I2ec8f) 
- 不允許 LayoutPadding 有負值的邊框間距。勿用負值位置偏移,請改用 LayoutOffset (Ifb5b1) 
- WithConstraint 具有 LayoutDirection 參數 (I6d6f7) 
- 已將 - ComposeFlags.COMPOSER_PARAM旗標更新為- true,這會變更 Compose 外掛程式的程式碼產生策略。大致上來說,這會導致系統產生附加合成參數的 @Composable 函式,這個參數會傳遞至後續的 @Composable 呼叫中,藉此讓執行階段妥善管理執行作業。這是二進位檔的重大破壞性變更,但應在所有 Compose 的合法使用情況中,保留來源層級的相容性。(I7971c)
- 已變更 LayoutCoordinates,將 providedAlignmentLines 成為 Set (而非 Map),同時讓 LayoutCoordinates 實作 get() 運算子,而不是擷取一個值。這樣一來,修飾符就能輕鬆修改組合的一或多個值,而不必為每個修飾符建立新的集合 (I0245a) 
- LayoutCoordinates 已不再具備位置屬性。考慮使用 LayoutModifiers、旋轉或資源調度時,排名屬性並不合理。開發人員應改用 parentCoordinates 和 childToLocal() 計算 oneLayoutCoordinate 之間的轉換。 - LayoutCoordinates 使用 IntPxSize 做為大小屬性,而非 PxSize。Layout 會使用整數像素大小設定版面配置,因此所有版面配置大小都應使用整數,而不是浮點值 (I9367b)。 
- 改善限制的 API 介面 (I0fd15) 
- 新增了 TextDirection.Content (I48f36) 
- 調整工具列選單,使其正確顯示複製、剪下和貼上選項。(Id3955) 
- 為 TextField 的選取新增 FloatingToolbar (Ie8b07) 
- 已將 TextDirectionAlgorithm 重新命名為 TextDirection (I75ce8) 
- 已將 TextDirection 重新命名為 ResolvedTextDirection (I3ff38) 
- 已為 TextField 選取新增 HapticFeedback。(I58050) 
- 已為 TextField 選取新增 Copy、Cut 和 Paste 方法 (Idb70b) 
- 已刪除 TestTag 和 Semantics。請改用 Modifier.testTag 和 Modifier.semantics (I15ff0、b/158841414) 
- 已將 Locale 和 LocaleList 的套件名稱從 androidx.ui.text 變更為 androidx.ui.intl (I8132c) 
- API 變更:已將 - AnnotatedString(builder: Builder)重新命名為- annotatedString(builder: Builder)(Ia6377)。
- API 變更:已將 - AnnotatedString.Item重新命名為- AnnotatedString.Range(I2d44d)。
- 為文字相關作業新增工具列。(I49d53) 
- 現已提供新的 LifecycleOwnerAmbient。現在,您以 Compose UI 使用的 Activity 應能擴充 androidx.activity.ComponentActivity (or AppCompatActivity)android.app.Activity 上的 setContent 現已淘汰 (Idb25a、b/153141084) 
- 為配合 androidx 原則,ui-android-text 套件名稱 (androidx.text) 改為 androidx.ui.text.platform。(I42711) 
