Android:将Horizo​​ntalGridView设置为wrap_content?

标签 android

我将 Horizo​​ntalGridView 的宽度设置为 wrap_content。但它并没有根据其内容进行 self 调整。在下图中,白色条显示了 Horizo​​ntalGridView。我如何才能实现所需的行为?

 <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"/>

enter image description here

最佳答案

为了实现这一点,我以这种方式重写 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:将Horizo​​ntalGridView设置为wrap_content?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375841/

相关文章:

android - 我在父fragment1中有子Fragment2,我想在单击后更改 fragment ,而在下次按下时要更改 fragment ,我想关闭 Activity 吗?

java - 如何在 LinearLayout 中调整 3 个 ImageView

android - 如何以uri的形式从 Intent 中获取数据?

java - Gradle 构建失败,消息为 : TaskDependencyResolveException: Could not determine the dependencies of task ':compileDebugKotlin'

java - 当手机处于打瞌睡模式时扫描蓝牙 LE 设备不起作用。打瞌睡模式时不会调用 CallBack 方法

android - 禁用 RecyclerView 项目拖动时的振动

android - 在 Android 应用程序中保留数据库引用的 "best practice"方法是什么?

android - 我在 android 手机 ( 7.0 ) 中看不到背景颜色,但在平板电脑中我可以

android - stopService() 会停止前台服务吗?

java - 在多模块项目上运行 Proguard 作为 "one piece"