Skip to content

Commit e81234f

Browse files
committed
[FIXED] Inner scrolling issue
1 parent ab2d057 commit e81234f

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

example/src/main/java/dev/hossain/ynaash/example/ui/demoprismjs/PrismJsComposeDemoActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.compose.foundation.layout.height
1616
import androidx.compose.foundation.layout.padding
1717
import androidx.compose.foundation.layout.systemBars
1818
import androidx.compose.foundation.layout.windowInsetsPadding
19+
import androidx.compose.foundation.layout.wrapContentHeight
1920
import androidx.compose.foundation.rememberScrollState
2021
import androidx.compose.foundation.verticalScroll
2122
import androidx.compose.material3.Card
@@ -27,7 +28,10 @@ import androidx.compose.material3.dynamicDarkColorScheme
2728
import androidx.compose.material3.dynamicLightColorScheme
2829
import androidx.compose.material3.lightColorScheme
2930
import androidx.compose.runtime.Composable
31+
import androidx.compose.runtime.remember
3032
import androidx.compose.ui.Modifier
33+
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
34+
import androidx.compose.ui.input.nestedscroll.nestedScroll
3135
import androidx.compose.ui.platform.LocalContext
3236
import androidx.compose.ui.tooling.preview.Preview
3337
import androidx.compose.ui.unit.dp
@@ -89,11 +93,13 @@ fun AppTheme(
8993

9094
@Composable
9195
fun PrismJsComposeDemoScreen() {
96+
val nestedScrollConnection = remember { object : NestedScrollConnection {} }
9297
Column(
9398
modifier = Modifier
9499
.fillMaxSize()
95100
.windowInsetsPadding(WindowInsets.systemBars)
96101
.padding(16.dp)
102+
.nestedScroll(nestedScrollConnection)
97103
.verticalScroll(rememberScrollState()),
98104
verticalArrangement = Arrangement.spacedBy(16.dp)
99105
) {
@@ -146,7 +152,7 @@ fun PrismJsComposeDemoScreen() {
146152
Card(
147153
modifier = Modifier
148154
.fillMaxWidth()
149-
.height(150.dp)
155+
.height(100.dp)
150156
) {
151157
SyntaxHighlighter(
152158
sourceCode = "data class Student(val name: String, val age: Int)",

highlighter/src/main/java/dev/hossain/ynaash/compose/SyntaxHighlighterComposable.kt

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package dev.hossain.ynaash.compose
22

3+
import androidx.compose.foundation.layout.Box
4+
import androidx.compose.foundation.rememberScrollState
5+
import androidx.compose.foundation.verticalScroll
36
import androidx.compose.runtime.Composable
47
import androidx.compose.ui.Modifier
58
import androidx.compose.ui.viewinterop.AndroidView
@@ -32,24 +35,29 @@ fun SyntaxHighlighter(
3235
showLineNumbers: Boolean = false,
3336
modifier: Modifier = Modifier
3437
) {
35-
AndroidView(
36-
modifier = modifier,
37-
factory = { context ->
38-
SyntaxHighlighterWebView(context).apply {
39-
bindSyntaxHighlighter(
38+
val scrollState = rememberScrollState()
39+
Box(
40+
modifier = modifier
41+
.verticalScroll(scrollState)
42+
) {
43+
AndroidView(
44+
modifier = Modifier,
45+
factory = { context ->
46+
SyntaxHighlighterWebView(context).apply {
47+
bindSyntaxHighlighter(
48+
formattedSourceCode = sourceCode,
49+
language = language,
50+
showLineNumbers = showLineNumbers
51+
)
52+
}
53+
},
54+
update = { webView ->
55+
webView.bindSyntaxHighlighter(
4056
formattedSourceCode = sourceCode,
4157
language = language,
4258
showLineNumbers = showLineNumbers
4359
)
4460
}
45-
},
46-
update = { webView ->
47-
// Update the webview when parameters change
48-
webView.bindSyntaxHighlighter(
49-
formattedSourceCode = sourceCode,
50-
language = language,
51-
showLineNumbers = showLineNumbers
52-
)
53-
}
54-
)
61+
)
62+
}
5563
}

0 commit comments

Comments
 (0)