我将HorizontalGridView
的宽度设置为wrap_content
。但是它并没有根据其内容进行自我调整。在下面的图像中,白条显示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"/>
答案 0 :(得分:0)
要实现这一点,我将以这种方式覆盖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)
}
}
这不是最佳方法,但可以。 ;)
答案 1 :(得分:-1)
可以使用setRowHeight方法来实现:
gridView.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT)
在我的情况下,我扩展了 HorizontalGridView 并在构造函数中调用此方法以使 WRAP_CONTENT 默认行为