You need to enable JavaScript to run this app. 添加View未铺满全屏,如何实现Sinch远程视频通话画面全屏显示
优惠活动
大模型
产品
解决方案
定价
更多

添加View未铺满全屏,如何实现Sinch远程视频通话画面全屏显示

远程视频画面全屏实现方案

1. 布局文件调整

首先确认XML布局中id为remoteVideo的RelativeLayout配置:

  • 宽高属性均设置为match_parent
  • 移除该控件及其所有父控件的padding、margin属性
  • 确保布局中没有其他控件覆盖或占用remoteVideo的展示区域

2. 代码层面适配

你当前直接添加视频视图未指定布局参数,会默认使用wrap_content导致无法铺满容器,修改addVideoViews中远程视图添加逻辑:

private fun addVideoViews() {
    if (mVideoViewsAdded || sinchServiceInterface == null) {
        return  //early
    }
    val vc = sinchServiceInterface!!.getVideoController()
    if (vc != null) {
        val localView = findViewById<View>(com.ayush.flow.R.id.localVideo) as RelativeLayout
        val remoteview = findViewById<View>(com.ayush.flow.R.id.remoteVideo) as RelativeLayout

        val lview = vc.localView
        val rview=vc.remoteView

        // 本地视图配置(可选)
        lview.layoutParams = RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT
        )
        localView.addView(lview)

        // 远程视图全屏配置
        val remoteLayoutParams = RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT
        )
        rview.layoutParams = remoteLayoutParams
        // 配置缩放模式:SCALE_ASPECT_FILL会等比例拉伸裁剪视频,完全填满容器,不留黑边
        // 不同Sinch SDK版本方法名可能有差异,可对应调整为你所用版本的缩放配置API
        rview.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL)
        // 清空默认边距
        rview.setPadding(0,0,0,0)
        remoteview.addView(rview)

        mVideoViewsAdded = true

        localView.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                //this toggles the front camera to rear camera and vice versa
                vc.toggleCaptureDevicePosition()
            }
        })
    }
}

3. 系统栏适配(可选,需完全全屏时配置)

如果需要连系统状态栏、导航栏也隐藏,实现真正的全屏效果,在对应Activity的onCreate方法中添加如下代码:

window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_FULLSCREEN
        or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)

同时在Manifest对应Activity节点配置android:fitsSystemWindows="false",避免布局自动缩进预留系统栏位置。

内容的提问来源于stack exchange,提问作者Ayush Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 06:48:04