Android - 线性视图 - 视图的动态实例化

Android - LinearView - Dynamic instanciation of views

我正在尝试创建在线性布局中实例化某些视图的函数

private lateinit var layout: LinearLayout 
var par = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)

override fun onCreate(savedInstanceState: Bundle?) {
    //The init stuff with binding
    layout = binding.root.findViewById(R.id.gamelayout)
    lpar.setMargins(10,10,10,10)

    test()
}

private fun instanciateText(s:String)
{
    val tv = TextView(this)
    tv.text = s
    tv.layoutParams = par
    layout.addView(tv)
}

fun instanciateImage()
{
    val iv = ImageView(this)
    iv.setImageResource(R.drawable.start1)
    iv.layoutParams = par
    layout.addView(iv)
}

fun test(){
    instanciateText("Text 1 ")
    instanciateImage()
    instanciateText("Text 2 ")
}

文本很好用,但是图像,视图彼此相差太远,我找不到原因

如果添加了可拉伸的 ImageView,它会被扩展到最大程度,这样 LinearLayout 就会 100% 填充子元素。这是正确的行为。如果您想避免这种情况,请指定 ImageView.adjustViewBounds = true.

fun instanciateImage()
{
    val iv = ImageView(this)
    iv.setImageResource(R.drawable.start1)
    iv.layoutParams = par

    iv.adjustViewBounds = true

    layout.addView(iv)
}