首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >barteksc/AndroidPdfViewer的背景色

barteksc/AndroidPdfViewer的背景色
EN

Stack Overflow用户
提问于 2022-01-28 13:38:38
回答 1查看 203关注 0票数 0

由于我在JetPack撰写之前没有任何使用安卓系统的经验,所以我无法理解这一点。

我正在使用barteksc/AndroidPdfViewer,但是由于这是一个旧的库,所以我需要将它封装在一个可组合的AndroidView()中。这样可以正确地显示PDF。

代码语言:javascript
复制
@Composable
fun PDFView(
    byteArray: ByteArray,
) {
    AndroidView(
        modifier = Modifier
            .fillMaxSize(),

        factory = { context ->
            PDFView(
                ContextThemeWrapper(context, R.style.PdfView), null
            )
        },
        update = { pdfView ->
            Log.d(TAG, "PDF view UPDATE called")
            pdfView
                .fromBytes(byteArray)
                .autoSpacing(false)
                .spacing(25)
                .pageFitPolicy(FitPolicy.BOTH)
                .load()
        }
    )
}

根据库的文档,设置一些间距和添加背景颜色将导致PDF页面的可视化分离。设置AndroidView的修饰符背景不起作用。因此,我尝试像这样在R.style.PDFView上设置背景(尝试了几个选项):

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="PdfView" parent="Theme.MyPDFView">
        <item name="colorSurface">@color/blue</item>
        <item name="background">@color/blue</item>
        <item name="backgroundColor">@color/blue</item>
    </style>
</resources>

但这仍然改变不了背景。要完成这个任务,Theme.MyPDFTheme看起来如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyPDFView" parent="Theme.MaterialComponents.DayNight">
        <item name="android:statusBarColor">@color/background_material_light</item>
        <item name="android:windowLightStatusBar">true</item>

        <item name="android:navigationBarColor">@color/background_material_light</item>
        <item name="android:windowLightNavigationBar">true</item>
    </style>
</resources>

我还尝试在Theme.kt中设置背景色

代码语言:javascript
复制
private val LightColorPalette = lightColors(
    surface = Color.Green,
    background = Color.Yellow,

但是PDFView的背景并没有改变,是的,设备处于光模式。如何设置此视图的背景?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-29 05:40:53

可以使用PDFView设置setBackgroundColor背景色。

代码语言:javascript
复制
factory = { context ->
    PDFView(
        context,
        null
    ).also {
        it.setBackgroundColor(Color.Transparent.toArgb())
    }
},

然后,使用Modifier设置的背景色将变得可见。完整的例子:

代码语言:javascript
复制
AndroidView(
    factory = { context ->
        PDFView(
            context,
            null
        ).also {
            it.setBackgroundColor(Color.Transparent.toArgb())
        }
    },
    update = { pdfView ->
        pdfView
            .fromStream(pdfView.context.resources.openRawResource(R.raw.sample))
            .autoSpacing(false)
            .spacing(25)
            .pageFitPolicy(FitPolicy.BOTH)
            .load()
    },
    modifier = Modifier
        .fillMaxSize()
        .background(Color.Red)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70894665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档