diff --git a/gradle.properties b/gradle.properties index ce5f709..5d1d788 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,4 +2,4 @@ org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8 android.useAndroidX=true kotlin.code.style=official android.nonTransitiveRClass=true -PUBLISH_VERSION=0.4.9 +PUBLISH_VERSION=0.4.10 diff --git a/sample-app/src/main/java/com/xuqm/sdk/sample/ui/webview/WebViewScreen.kt b/sample-app/src/main/java/com/xuqm/sdk/sample/ui/webview/WebViewScreen.kt index b12c9b5..423a877 100644 --- a/sample-app/src/main/java/com/xuqm/sdk/sample/ui/webview/WebViewScreen.kt +++ b/sample-app/src/main/java/com/xuqm/sdk/sample/ui/webview/WebViewScreen.kt @@ -17,8 +17,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.rememberSaveable import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalClipboardManager diff --git a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt index cbb9809..46ed28d 100644 --- a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt +++ b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt @@ -6,7 +6,7 @@ import android.content.pm.PackageManager import android.net.Uri import android.os.Handler import android.os.Looper -import android.util.Log +import android.view.ViewGroup import android.webkit.JavascriptInterface import android.webkit.PermissionRequest import android.webkit.ValueCallback @@ -14,6 +14,7 @@ import android.webkit.WebChromeClient import android.webkit.WebResourceRequest import android.webkit.WebViewClient import android.webkit.WebView +import android.widget.FrameLayout import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.runtime.Composable @@ -201,7 +202,7 @@ fun XWebViewView( AndroidView( modifier = modifier, factory = { ctx -> - WebView(ctx).apply { + val wv = WebView(ctx).apply { settings.javaScriptEnabled = true settings.domStorageEnabled = true settings.useWideViewPort = true @@ -279,12 +280,21 @@ fun XWebViewView( if (config.url.isNotBlank()) { loadUrl(config.url) } - webView = this } + webView = wv + + val container = FrameLayout(ctx) + container.addView(wv, FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT, + )) + + container }, - update = { view -> - if (view.url.isNullOrBlank() && config.url.isNotBlank()) { - view.loadUrl(config.url) + update = { container -> + val wv = (container as? FrameLayout)?.getChildAt(0) as? WebView ?: return@AndroidView + if (wv.url.isNullOrBlank() && config.url.isNotBlank()) { + wv.loadUrl(config.url) } }, )