我總是使用視圖系結,甚至在回收器視圖配接器中使用專案視圖系結,但是這次我希望視圖持有者也可以用一些邊距填充 70% 的螢屏,這種舊方式代碼在沒有視圖系結的情況下看起來很好:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.item_task, parent, false)
val layoutParams = LinearLayout.LayoutParams((parent.width * 0.7).toInt(), LinearLayout.LayoutParams.WRAP_CONTENT)
layoutParams.setMargins((15.toDp()).toPx(), 0, (40.toDp()).toPx(), 0)
view.layoutParams = layoutParams
return MyViewHolder(view)
}
雖然 MyViewHolder 是一個回傳視圖持有者的內部類
但是如果我想使用視圖系結,它將是這樣的:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return ViewHolder(ITEM_BINDING.inflate(LayoutInflater.from(parent.context), parent, false))
}
但在最后一種情況下,我無法設定布局引數,它似乎沒有像 setLayout 引數這樣的功能,有沒有辦法通過視圖系結設定布局引數,甚至只設定邊距并填充 70% 的寬度?
uj5u.com熱心網友回復:
用來ViewBinding.root獲取view
val viewBinding = ITEM_BINDING.inflate(LayoutInflater.from(parent.context), parent, false)
val layoutParams = LinearLayout.LayoutParams((parent.width * 0.7).toInt(), LinearLayout.LayoutParams.WRAP_CONTENT)
layoutParams.setMargins((15.toDp()).toPx(), 0, (40.toDp()).toPx(), 0)
viewBinding.root.layoutParams = layoutParams
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/448694.html
標籤:安卓 科特林 android-recyclerview
上一篇:錯誤:flutter/lib/ui/ui_dart_state.cc(209)]未處理的例外:型別“String”不是型別轉換中“int”型別的子型別
