将Anko视图的高度和宽度设置为match_parent

4

我希望将视频视图的高度和宽度设置为match_parent。我的代码大致如下。没有heightwidth属性可以正常工作,但是按照以下方式进行操作会出现val cannot be reassigned错误。

class VideoActivityUI : AnkoComponent<VideoActivity> {
    companion object {
        val ID_VIDEO = 11
    }

    override fun createView(ui: AnkoContext<VideoActivity>) = with(ui) {
        videoView{
            id = ID_VIDEO
            height = matchParent
            width = matchParent
        }
    }
}

videoView { layoutParams = OuterLayout.LayoutParams(matchParent, matchParent) ...,其中OuterLayout是包围此VideoView的布局类。 - Miha_x64
1个回答

7
您需要使用lparams来设置布局参数,就像这样(如果您想要省略显式参数名称,则可以):
videoView {
    id = ID_VIDEO
}.lparams (width = matchParent, height = matchParent)

或者,您可以这样做:

videoView {
    id = ID_VIDEO
}.lparams {
    height = matchParent
    width = matchParent
}

相关的Anko wiki章节可以在这里找到。
请注意,您必须在Activity布局的根部放置一个ViewGroup,以便为其提供布局参数,因为它会根据是否在FrameLayoutLinearLayoutRelativeLayout中而获得不同的参数。
例如,使用简单的frameLayout,您的代码将如下所示:
override fun createView(ui: AnkoContext<VideoActivity>) = with(ui) {
    frameLayout {
        videoView {
            id = ID_VIDEO
        }.lparams(matchParent, matchParent)
    }
}

这两个都给我一个“未解决的引用:lparams”错误。 - Muz
啊,我明白了,这是VideoView特有的问题,XML文件也会出现这种情况。我会接受这个答案。 - Muz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接