configure samples and refactor test-app for tv libraries
* Added samples app in tv/ . This will contain samples for both tv/foundation and tv/material
* Moved test app to tv/ because it references both tv-foundation and tv-material and as recommended, moved it to
a higher level
Test: Verified test-app on emulator and samples code shows up onHovering of Composable
Change-Id: Idd6e7867212ae2ab0e6565f9488e26965bb8ed79
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 5336ce4..2e1c392 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -301,6 +301,7 @@
docs(project(":transition:transition-ktx"))
docs(project(":tv:tv-foundation"))
docs(project(":tv:tv-material"))
+ samples(project(":tv:tv-samples"))
docs(project(":tvprovider:tvprovider"))
docs(project(":vectordrawable:vectordrawable"))
docs(project(":vectordrawable:vectordrawable-animated"))
diff --git a/settings.gradle b/settings.gradle
index 2a444ec..efd31c8 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -886,7 +886,8 @@
includeProject(":transition:transition-ktx", [BuildType.MAIN, BuildType.FLAN])
includeProject(":tv:tv-foundation", [BuildType.COMPOSE])
includeProject(":tv:tv-material", [BuildType.COMPOSE])
-includeProject(":tv:tv-material-samples", "tv/tv-material/samples", [BuildType.COMPOSE])
+includeProject(":tv:integration-tests:demos", [BuildType.COMPOSE])
+includeProject(":tv:tv-samples", "tv/samples", [BuildType.COMPOSE])
includeProject(":tvprovider:tvprovider", [BuildType.MAIN])
includeProject(":vectordrawable:integration-tests:testapp", [BuildType.MAIN])
includeProject(":vectordrawable:vectordrawable", [BuildType.MAIN])
diff --git a/tv/tv-material/samples/build.gradle b/tv/integration-tests/demos/build.gradle
similarity index 85%
rename from tv/tv-material/samples/build.gradle
rename to tv/integration-tests/demos/build.gradle
index af6e84b..932571e 100644
--- a/tv/tv-material/samples/build.gradle
+++ b/tv/integration-tests/demos/build.gradle
@@ -24,23 +24,25 @@
}
dependencies {
- implementation(project(":tv:tv-material"))
implementation(libs.kotlinStdlib)
+
+ implementation("androidx.activity:activity-compose:1.6.1")
implementation(project(":activity:activity"))
+
implementation(project(":compose:material3:material3"))
implementation(project(":navigation:navigation-runtime"))
- implementation("androidx.activity:activity-compose:1.6.1")
+
implementation(project(":tv:tv-foundation"))
+ implementation(project(":tv:tv-material"))
+
implementation("androidx.appcompat:appcompat:1.6.0-alpha05")
- compileOnly(project(':annotation:annotation-sampled'))
}
androidx {
- name = "TV-Compose Samples"
+ name = "TV-Compose Test App"
type = LibraryType.SAMPLES
- mavenGroup = LibraryGroups.TV
inceptionYear = "2022"
- description = "Contains the sample code for the APIs in the androidx.tv:tv-material library"
+ description = "Test application for TV libraries"
}
android {
@@ -55,5 +57,5 @@
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
- namespace "androidx.tv.tvmaterial.samples"
+ namespace "androidx.tv.integration.demos"
}
\ No newline at end of file
diff --git a/tv/tv-material/samples/src/main/AndroidManifest.xml b/tv/integration-tests/demos/src/main/AndroidManifest.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/AndroidManifest.xml
rename to tv/integration-tests/demos/src/main/AndroidManifest.xml
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/App.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/App.kt
similarity index 96%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/App.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/App.kt
index 1e448a1..7898201 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/App.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/App.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/FeaturedCarousel.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/FeaturedCarousel.kt
similarity index 98%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/FeaturedCarousel.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/FeaturedCarousel.kt
index c5dfada..1d1113f 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/FeaturedCarousel.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/FeaturedCarousel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
import androidx.compose.foundation.background
import androidx.compose.foundation.border
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/ImmersiveList.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/ImmersiveList.kt
similarity index 98%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/ImmersiveList.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/ImmersiveList.kt
index cb4847f..29dfe8d 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/ImmersiveList.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/ImmersiveList.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
import androidx.compose.foundation.background
import androidx.compose.foundation.border
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/LazyRowsAndColumns.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/LazyRowsAndColumns.kt
similarity index 97%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/LazyRowsAndColumns.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/LazyRowsAndColumns.kt
index f28379e..c6e9b1b 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/LazyRowsAndColumns.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/LazyRowsAndColumns.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/MainActivity.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/MainActivity.kt
similarity index 95%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/MainActivity.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/MainActivity.kt
index e8ebd3a..fd0f6da 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/MainActivity.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/MainActivity.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
import android.os.Bundle
import androidx.activity.ComponentActivity
diff --git a/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/TopNavigation.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/TopNavigation.kt
new file mode 100644
index 0000000..351d05a
--- /dev/null
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/TopNavigation.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.tv.integration.demos
+
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.tv.material.LocalContentColor
+import androidx.tv.material.Tab
+import androidx.tv.material.TabRow
+import kotlinx.coroutines.delay
+
+enum class Navigation(val displayName: String, val action: @Composable () -> Unit) {
+ LazyRowsAndColumns("Lazy Rows and Columns", { LazyRowsAndColumns() }),
+ FeaturedCarousel("Featured Carousel", { FeaturedCarouselContent() }),
+ ImmersiveList("Immersive List", { SampleImmersiveList() }),
+}
+
+@Composable
+internal fun TopNavigation(
+ updateSelectedTab: (Navigation) -> Unit = {},
+) {
+ var selectedTabIndex by remember { mutableStateOf(0) }
+ val tabs = Navigation.values().map { it.displayName }
+
+ // Pill indicator
+ PillIndicatorTabRow(
+ tabs = tabs,
+ selectedTabIndex = selectedTabIndex,
+ updateSelectedTab = { selectedTabIndex = it }
+ )
+
+ LaunchedEffect(selectedTabIndex) {
+ // Only update the tab after 250 milliseconds to avoid loading intermediate tabs while
+ // fast scrolling in the TabRow
+ delay(250)
+ updateSelectedTab(Navigation.values()[selectedTabIndex])
+ }
+}
+
+/**
+ * Pill indicator tab row for reference
+ */
+@Composable
+fun PillIndicatorTabRow(
+ tabs: List<String>,
+ selectedTabIndex: Int,
+ updateSelectedTab: (Int) -> Unit
+) {
+ TabRow(
+ selectedTabIndex = selectedTabIndex,
+ separator = { Spacer(modifier = Modifier.width(12.dp)) },
+ ) {
+ tabs.forEachIndexed { index, tab ->
+ Tab(
+ selected = index == selectedTabIndex,
+ onFocus = { updateSelectedTab(index) },
+ ) {
+ Text(
+ text = tab,
+ fontSize = 12.sp,
+ color = LocalContentColor.current,
+ modifier = Modifier.padding(horizontal = 16.dp, vertical = 6.dp)
+ )
+ }
+ }
+ }
+}
diff --git a/tv/tv-material/samples/src/main/res/drawable/app_icon_your_company.png b/tv/integration-tests/demos/src/main/res/drawable/app_icon_your_company.png
similarity index 100%
rename from tv/tv-material/samples/src/main/res/drawable/app_icon_your_company.png
rename to tv/integration-tests/demos/src/main/res/drawable/app_icon_your_company.png
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/layout/activity_main.xml b/tv/integration-tests/demos/src/main/res/layout/activity_main.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/layout/activity_main.xml
rename to tv/integration-tests/demos/src/main/res/layout/activity_main.xml
diff --git a/tv/tv-material/samples/src/main/res/mipmap-hdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-mdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-xhdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/values/colors.xml b/tv/integration-tests/demos/src/main/res/values/colors.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/values/colors.xml
rename to tv/integration-tests/demos/src/main/res/values/colors.xml
diff --git a/tv/tv-material/samples/src/main/res/values/strings.xml b/tv/integration-tests/demos/src/main/res/values/strings.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/values/strings.xml
rename to tv/integration-tests/demos/src/main/res/values/strings.xml
diff --git a/tv/tv-material/samples/src/main/res/values/themes.xml b/tv/integration-tests/demos/src/main/res/values/themes.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/values/themes.xml
rename to tv/integration-tests/demos/src/main/res/values/themes.xml
diff --git a/tv/tv-material/samples/build.gradle b/tv/samples/build.gradle
similarity index 62%
copy from tv/tv-material/samples/build.gradle
copy to tv/samples/build.gradle
index af6e84b..dd420cc 100644
--- a/tv/tv-material/samples/build.gradle
+++ b/tv/samples/build.gradle
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 The Android Open Source Project
+ * Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,46 +14,36 @@
* limitations under the License.
*/
+
import androidx.build.LibraryType
plugins {
id("AndroidXPlugin")
- id("com.android.application")
+ id("com.android.library")
id("AndroidXComposePlugin")
id("org.jetbrains.kotlin.android")
}
dependencies {
- implementation(project(":tv:tv-material"))
implementation(libs.kotlinStdlib)
- implementation(project(":activity:activity"))
- implementation(project(":compose:material3:material3"))
- implementation(project(":navigation:navigation-runtime"))
- implementation("androidx.activity:activity-compose:1.6.1")
+
implementation(project(":tv:tv-foundation"))
- implementation("androidx.appcompat:appcompat:1.6.0-alpha05")
- compileOnly(project(':annotation:annotation-sampled'))
+ implementation(project(":tv:tv-material"))
+ implementation(project(":compose:material3:material3"))
+ compileOnly(project(":annotation:annotation-sampled"))
}
androidx {
- name = "TV-Compose Samples"
+ name = "Samples library for TV packages"
type = LibraryType.SAMPLES
mavenGroup = LibraryGroups.TV
inceptionYear = "2022"
- description = "Contains the sample code for the APIs in the androidx.tv:tv-material library"
+ description = "Contains the sample code for the APIs in the androidx.tv libraries"
}
android {
defaultConfig {
minSdkVersion 28
}
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile('proguard-android.txt')
- }
- }
- namespace "androidx.tv.tvmaterial.samples"
-}
\ No newline at end of file
+ namespace "androidx.tv.samples"
+}
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/TopNavigation.kt b/tv/samples/src/main/java/androidx/tv/samples/TabRowSamples.kt
similarity index 72%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/TopNavigation.kt
rename to tv/samples/src/main/java/androidx/tv/samples/TabRowSamples.kt
index 36ee067..8b2fb6b 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/TopNavigation.kt
+++ b/tv/samples/src/main/java/androidx/tv/samples/TabRowSamples.kt
@@ -14,8 +14,9 @@
* limitations under the License.
*/
-package androidx.tv.tvmaterial.samples
+package androidx.tv.samples
+import androidx.annotation.Sampled
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Spacer
@@ -24,13 +25,11 @@
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@@ -39,45 +38,16 @@
import androidx.tv.material.TabDefaults
import androidx.tv.material.TabRow
import androidx.tv.material.TabRowDefaults
-import kotlinx.coroutines.delay
-
-enum class Navigation(val displayName: String, val action: @Composable () -> Unit) {
- LazyRowsAndColumns("Lazy Rows and Columns", { LazyRowsAndColumns() }),
- FeaturedCarousel("Featured Carousel", { FeaturedCarouselContent() }),
- ImmersiveList("Immersive List", { SampleImmersiveList() }),
-}
-
-@Composable
-internal fun TopNavigation(
- updateSelectedTab: (Navigation) -> Unit = {},
-) {
- var selectedTabIndex by remember { mutableStateOf(0) }
- val tabs = Navigation.values().map { it.displayName }
-
- // Pill indicator
- PillIndicatorTabRow(
- tabs = tabs,
- selectedTabIndex = selectedTabIndex,
- updateSelectedTab = { selectedTabIndex = it }
- )
-
- LaunchedEffect(selectedTabIndex) {
- // Only update the tab after 250 milliseconds to avoid loading intermediate tabs while
- // fast scrolling in the TabRow
- delay(250)
- updateSelectedTab(Navigation.values()[selectedTabIndex])
- }
-}
/**
* Pill indicator tab row for reference
*/
@Composable
-fun PillIndicatorTabRow(
- tabs: List<String>,
- selectedTabIndex: Int,
- updateSelectedTab: (Int) -> Unit
-) {
+@Sampled
+fun PillIndicatorTabRow() {
+ val tabs = listOf("Tab 1", "Tab 2", "Tab 3")
+ var selectedTabIndex by remember { mutableStateOf(0) }
+
TabRow(
selectedTabIndex = selectedTabIndex,
separator = { Spacer(modifier = Modifier.width(12.dp)) },
@@ -85,7 +55,7 @@
tabs.forEachIndexed { index, tab ->
Tab(
selected = index == selectedTabIndex,
- onFocus = { updateSelectedTab(index) },
+ onFocus = { selectedTabIndex = index },
) {
Text(
text = tab,
@@ -102,11 +72,11 @@
* Underlined indicator tab row for reference
*/
@Composable
-fun UnderlinedIndicatorTabRow(
- tabs: List<String>,
- selectedTabIndex: Int,
- updateSelectedTab: (Int) -> Unit
-) {
+@Sampled
+fun UnderlinedIndicatorTabRow() {
+ val tabs = listOf("Tab 1", "Tab 2", "Tab 3")
+ var selectedTabIndex by remember { mutableStateOf(0) }
+
TabRow(
selectedTabIndex = selectedTabIndex,
separator = { Spacer(modifier = Modifier.width(12.dp)) },
@@ -119,7 +89,7 @@
tabs.forEachIndexed { index, tab ->
Tab(
selected = index == selectedTabIndex,
- onFocus = { updateSelectedTab(index) },
+ onFocus = { selectedTabIndex = index },
colors = TabDefaults.underlinedIndicatorTabColors(),
) {
Text(
@@ -137,6 +107,7 @@
* Tab changes onClick instead of onFocus
*/
@Composable
+@Sampled
fun OnClickNavigation() {
val bgColors = listOf(
Color(0x6a, 0x16, 0x16),
@@ -151,7 +122,7 @@
Box(
modifier = Modifier
.fillMaxSize()
- .background(Brush.verticalGradient(listOf(bgColors[activeTabIndex], Color.DarkGray)))
+ .background(bgColors[activeTabIndex])
) {
TabRow(
selectedTabIndex = focusedTabIndex,
@@ -172,9 +143,7 @@
repeat(bgColors.size) {
Tab(
selected = activeTabIndex == it,
- onFocus = {
- focusedTabIndex = it
- },
+ onFocus = { focusedTabIndex = it },
onClick = {
focusedTabIndex = it
activeTabIndex = it
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt
index 6510890..e7949fe 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt
@@ -80,8 +80,6 @@
* Adds a sticky header item, which will remain pinned even when scrolling after it.
* The header will remain pinned until the next header will take its place.
*
- * @sample androidx.compose.foundation.samples.StickyHeaderSample
- *
* @param key a stable and unique key representing the item. Using the same key
* for multiple items in the list is not allowed. Type of the key should be saveable
* via Bundle on Android. If null is passed the position in the list will represent the key.
diff --git a/tv/tv-material/build.gradle b/tv/tv-material/build.gradle
index 892bde3..2190bec 100644
--- a/tv/tv-material/build.gradle
+++ b/tv/tv-material/build.gradle
@@ -50,7 +50,7 @@
androidTestImplementation(project(":compose:test-utils"))
androidTestImplementation(libs.testRunner)
- samples(projectOrArtifact(":tv:tv-material-samples"))
+ samples(project(":tv:tv-samples"))
}
android {
diff --git a/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt b/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
index 9fb0765..8630320 100644
--- a/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
+++ b/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
@@ -64,6 +64,11 @@
* tab. A TvTabRow places its tabs offset from the starting edge, and allows scrolling to tabs that
* are placed off screen.
*
+ * Examples:
+ * @sample androidx.tv.samples.PillIndicatorTabRow
+ * @sample androidx.tv.samples.UnderlinedIndicatorTabRow
+ * @sample androidx.tv.samples.OnClickNavigation
+ *
* @param selectedTabIndex the index of the currently selected tab
* @param modifier the [Modifier] to be applied to this tab row
* @param containerColor the color used for the background of this tab row