我正在尝试在底部显示全局显示的广告横幅。这意味着当我浏览整个应用程序时,我想停留在那里。
到目前为止,我已经尝试在 Column
中添加 NavHost
和 AdView
,希望链接页面的导航将只占用剩余的内容空间和底部 View 将保留在那里。但是,NavHost
占据整个屏幕,而 AdView
的高度为零。当我导航第二个 View 时,AdView
仍然位于 View 层次结构内,但高度仍然为零。
我尝试过更改各种设置,将 .weight(1f)
添加到广告 View 、更改列排列、.fillMaxSize()
、 .fillMaxHeight()
、.minHeight()
、固定高度等
我可能需要研究不同的布局来实现此结果,但不确定在哪个方向搜索。该广告效果很好,我尝试在没有该列的情况下显示,并正确显示在屏幕中央。
我尝试过的另一个变体是在没有列的情况下显示它,向 NavHost
添加底部间距,然后以某种方式将 AdView
定位到底部。对于这个变体,我无法将其定位到底部。
如有任何帮助,我们将不胜感激!
Column() {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = NavigationRoutes.Home
) {
composable(NavigationRoutes.Home) { HomeView(navController = navController) }
composable(
NavigationRoutes.Books,
arguments = listOf(navArgument("mode") { type = NavType.IntType })
) { backStackEntry ->
val rawMode = backStackEntry.arguments?.getInt("mode") ?: 0
var mode: ContentMode = if (rawMode == 0) {
ContentMode.READING
} else {
ContentMode.QUIZ
}
BooksView(navController = navController, mode = mode)
}
}
AndroidView(
modifier = Modifier
.fillMaxWidth()
.height(IntrinsicSize.Max)
.weight(1f),
factory = { context ->
AdView(context).apply {
setAdSize(AdSize.BANNER)
adUnitId = AdIdentifiers.GlobalBanner.adID
loadAd(AdRequest.Builder().build())
}
}
)
}
最佳答案
这可能是具有 Modifier.fillmaxSize() 的 NavHost 的任何子可组合项的问题。您可以为 NavHost 设置一个修饰符,让您定义它将覆盖多少空间
Column(modifier = Modifier.fillMaxSize()){
NavHost(modifier = Modifier.fillmaxWidth).weight(1f){}
AdView(modifier = Modifier
.fillMaxWidth()
.height(IntrinsicSize.Max)
)
}
关于android - Kotlin Compose 全局页脚 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72944989/