android - 如何在项目适应之前知道适配器项目的像素高度
问题描述
尝试在调整任何项目之前获取适配器列表项的像素高度
var item =
LayoutInflater.from(context).inflate(R.layout.adapter_item, null)
item.post {
System.out.println("height=$item.height")
}
以上 ^^^ 我膨胀了片段中引用和使用适配器的项目。然后我将高度打印为可运行的,所以我知道高度不会过早调用并且不会为零。
问题是 runnable 不运行,并且项目高度不打印。
我的问题是什么?谢谢
相关帖子 View 的 getWidth() 和 getHeight() 返回 0
编辑
我也试过这个,但没有打印语句
item.viewTreeObserver.addOnGlobalLayoutListener {
//At this point the layout is complete and the
//dimensions of myView and any child views are known.
System.out.println("height=$item.height")
}
我认为问题可能与膨胀不在可见层次结构中的布局有关?
解决方案
看起来我只需要确定适配器的高度。我可以看到打印出来的。
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var item = LayoutInflater.from(parent.context)
.inflate(R.layout.list_item, parent, false) as ConstraintLayout
item.post {
System.out.println("height=${item.height}")
}
return MyViewHolder(
item
)
}
推荐阅读
- maven - 添加了依赖项但无法正确导入?
- react-native - 如何在 react-native 中为 ios 获取没有 Apns 的本地通知?
- javascript - 路由节点/快递中的嵌套 API 请求
- batch-file - 在批处理脚本中使用 WMIC 重命名 PC 的问题
- javascript - 隐藏一个容器并在单击时显示另一个容器
- c# - DataGridView 控件无法拖动到我的表单
- android - 以毫秒为单位的 iOs 和 android 时间不一样?
- javascript - 无法在 d3.js 中的图形边缘附加标签
- android - android中的错误:错误膨胀类android.support.design.widget.NavigationView
- java - Apache Flink:执行环境和多个接收器