Hey guy's im working on porting my Android TV app to Compose. The only issue i have is the EPG guide..There is not much info on this yet.
I got a good idea but need help with this..
Top Hours scroll is done
Side channels Vertical scroll is done
The issue is the Events(programs)
i got one row done that has horizontalScroll ,but i need that row to be duplicated for each channel and that has a verticalScroll when channel is scrolling up or down.
Also since its TV , i added focusable(true) but i dont see the highlight when on the item?
private val HOURS_S = listOf("1:00", "2:00", "3:00", "4:00","5:00", "6:00","7:00","8:00", "9:00","10:00","11:00","12:00","13:00","14:00","15:00""16:00","17:00","18:00","19:00",
"20:00","21:00","22:00","23:00","24:00")
@Composable
fun ConstraintLayoutEpg(
modifier: Modifier = Modifier,
num: Int,
){
val verticalScrollState = rememberScrollState()
val horizontalScrollState = rememberScrollState()
ConstraintLayout {
val (hours,channel,event) = createRefs()
BasicHourHeader(HOURS_S,modifier = Modifier.constrainAs(hours){
top.linkTo(parent.top, margin = 16.dp)
})
Column( modifier.border(2.dp, Color.White).verticalScroll(verticalScrollState).focusable(true).constrainAs(channel){
top.linkTo(hours.bottom, margin = 6.dp)
}) {
repeat(num) { i ->
Text(
text = "Channel $i", color = Color.White, modifier = Modifier
.padding(8.dp)
.padding(8.dp)
.focusable(true)
)
}
}
Row(
modifier = modifier.border(2.dp, Color.White).horizontalScroll(horizontalScrollState).focusable(true)
.constrainAs(event) {
start.linkTo(channel.end, margin = 6.dp)
top.linkTo(hours.bottom, margin = 6.dp)
}) {
repeat(20) { i ->
Text(
text = "Channel Prg $i", color = Color.White, modifier = Modifier
.padding(10.dp)
.padding(8.dp)
.width(256.dp)
.focusable(true),textAlign = TextAlign.Start,
)
}
}
}
}