我将 HorizontalGridView
的宽度设置为 wrap_content
。但它并没有根据其内容进行 self 调整。在下图中,白色条显示了 HorizontalGridView
。我如何才能实现所需的行为?
<android.support.v17.leanback.widget.HorizontalGridView
android:id="@+id/list_view"
android:width="wrap_content"
android:height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
lb:horizontalMargin="@dimen/menu_inter_card_spacing"
android:background="#FFFFFF"/>
最佳答案
为了实现这一点,我以这种方式重写 onMeasure 方法:
override fun onMeasure(widthSpec: Int, heightSpec: Int) {
super.onMeasure(widthSpec, heightSpec)
val widthMode = MeasureSpec.getMode(widthSpec)
val widthSize = MeasureSpec.getSize(widthSpec)
if(widthMode == AT_MOST) {
var widthOnAdapterItems = 0
adapter?.let {
for (i in 0 until it.itemCount) {
val viewType = it.getItemViewType(i)
val viewHolder = it.createViewHolder(this,viewType)
viewHolder.itemView.measure(widthSpec, heightSpec)
widthOnAdapterItems += viewHolder.itemView.measuredWidth
}
}
setMeasuredDimension(min(widthOnAdapterItems, widthSize), measuredHeight)
}
}
这不是最佳的,但它可以工作。 ;)
关于Android:将HorizontalGridView设置为wrap_content?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375841/