使用绑定到线性布局并设置图像但在前一个视图(图像)之上

Using binding to Linear Layout and Setting an Image but ontop of the pervious View (Image)

这两天我都遇到了问题...单击按钮时我有一个绑定和要弹出的图像。 我希望每次按下按钮时,另一个图像会弹出到上一个图像旁边,或者,如果线性布局中没有 space,它将弹出到前一个图像之上。 这个想法是从卡片组中取出一张卡片并将其放在玩家的手上。

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityPlayTableBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
        var image = findViewById<ImageView>(R.id.fight_deck)
        var i: Int = 1
        val deck = Deck()
        var deckListOfCards: MutableList<Card> = deck.shuffledDeckOfCard()
        val deck_clickable_top = findViewById<ImageButton>(R.id.deck_button)
        val imageView = ImageView(this)
        val Width = convertDpToPixel(135f, this)
        val Height = convertDpToPixel(190f, this)
        imageView.layoutParams = LinearLayout.LayoutParams(Width.toInt(), Height.toInt())
        var imgResId: Int = 0
        deck_clickable_top.setOnClickListener {
            if (deckListOfCards.size != 0) {
                imgResId = deckListOfCards.get(0).getCardFace()
                i += 1
                deck.removeCardFromDeck(deckListOfCards.get(0))
            }
            if (deckListOfCards.size == 0) {
                deck_clickable_top.visibility = View.INVISIBLE
                deck_clickable_top.layoutParams.height = 0
            }
            imageView.setImageResource(imgResId)
        }
        binding.bottomLinearLayout.addView(imageView)
    }

我不知道该怎么做...

好吧,LinearLayout 似乎不是一个好的选择,但您可以尝试以下方法:

// step 1 - this is the linear layout you'll use as the container
val containerBinding = CustomLinearLayoutContainerBinding.inflate(inflater, container, false)

// step 2 - on some click event you can create a new binding, this should contain you image
val componentBinding = CustomComponentLayoutBinding.inflate(inflater, container, false).apply {
     // set the image drawable here, text, any other data in here
}

// step 3 - the root layout of that binding is the linear layout
containerBinding.root.addView(componentBinding.root)

// the following 2 methods of LinearLayout can be very handy
removeAllViews() // to remove all previously added children
invalidate() // to re-render the linear layout

但请注意,添加这些视图后,您想要对它们执行的所有操作都需要手动更改,而且,您不应该这样做。但是,我发现了这个link,看看这个实现,感觉这个更符合你的要求。