【发布时间】:2020-04-28 15:05:21
【问题描述】:
我想确保在回收站视图(horizontal 方向和 LinearLayoutManager 设置)中,如果我有 2 个项目要显示,它们都会获得父布局的 50%。所以两者都适合屏幕。
我尝试了 2 种方法,但都不能正常工作。
方法一:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val itemView = inflater.inflate(R.layout.horizontal_list_item_view, parent, false)
itemView.post(
object : Runnable {
override fun run() {
itemView.layoutParams.width = (parent.width * 0.5).toInt()
}
}
)
return ViewHolder(itemView)
}
除非我先滚动然后只有第一个项目的宽度调整了,否则这不起作用。
方法二:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val itemView = inflater.inflate(R.layout.horizontal_list_item_view, parent, false)
itemView.layoutParams.width = getScreenWidthFromUtils(context).x_width - MAGIC_NUMBER_WHICH_TAKES_PADDING_INTO_ACCOUNT)* 0.5).toInt()
return ViewHolder(itemView)
}
方法 2 种工作,但显然它不能成为解决方案,因为我怀疑它必须如此复杂才能实现这一点。
这样做的正确方法是什么?
【问题讨论】:
-
为什么不使用
GridLayoutManager而不是LinearLayoutManager? -
@Biscuit:这有什么帮助?如果解决了我可以切换
标签: android android-layout android-recyclerview