美文网首页
Android WebView 实现折叠功能

Android WebView 实现折叠功能

作者: _发强 | 来源:发表于2022-03-09 21:47 被阅读0次

WebView 实现折叠,查看更多
实现代码

private fun init() {
//... 省略更多
       webView.webViewClient = object : WebViewClient() {
            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                launchUI {
                    delay(300)
                    toggleHeight()
                }
            }
        }

        binding.tvExpand.click {
            binding.webView.layoutParams = LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
            )
            binding.tvExpand.isVisible = false
            disabledScroll(true)
        }
//... 省略更多
}

    private fun toggleHeight() {
        val height = webView.height
        val maxHeight = dp2px(320f)
        if (height > maxHeight) {
            val lp: LinearLayout.LayoutParams =
                webView.layoutParams as LinearLayout.LayoutParams
            lp.height = maxHeight
            webView.layoutParams = lp
            disabledScroll(false)
            tvExpand.isVisible = true  // tvExpand 是【查看更多】按钮
        } else {
            tvExpand.isVisible = false
        }
    }

    private fun disabledScroll(disable: Boolean = false) {
        webView.isVerticalScrollBarEnabled = disable
        webView.isHorizontalScrollBarEnabled = disable
        webView.isScrollContainer = disable
        if (!disable) {
            webView.setOnTouchListener { p0, p1 -> p1?.action == MotionEvent.ACTION_MOVE }
        } else {
            webView.setOnTouchListener(null)
        }
    }

页面布局 xml

... // 省略更多
<ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <WebView
                    android:id="@+id/webView"
                    android:layout_width="match_parent"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvExpand"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="查看更多"
                    android:padding="@dimen/dp_10"
                    android:textColor="@color/c_4797fc"
                    android:visibility="gone"
                    android:gravity="center" />

            </LinearLayout>
        </ScrollView>
... // 省略更多

相关文章

网友评论

      本文标题:Android WebView 实现折叠功能

      本文链接:https://www.haomeiwen.com/subject/emjxdrtx.html