Android TV 项目关于焦点缩放

问题描述 投票:0回答:1

使用下面的函数,我尝试扩大焦点项目的高度和宽度。我面临的问题是高度仅向底部扩展,而顶部似乎是固定的。我想要完全相反的。

inner class ItemViewSelectedListener : OnItemViewSelectedListener {
        override fun onItemSelected(
            itemViewHolder: Presenter.ViewHolder?,
            item: Any?,
            rowViewHolder: RowPresenter.ViewHolder?,
            row: Row?
        ) {
            if (item is MenuLabelI) {
                val indexOfItem = ((row as ListRow).adapter as ArrayObjectAdapter).indexOf(item)
                itemSelectedListener?.invoke(item)
                itemIndexSelectedListener?.invoke(indexOfItem)
            }
            itemViewHolder?.view?.setOnFocusChangeListener { view, booleanValue ->
                val layoutParams = view.layoutParams as ViewGroup.MarginLayoutParams
                if (booleanValue) {
                    view.setBackgroundResource(R.color.selector_color_taj_trees)
                    layoutParams.width = getWidthInPercent(view.context, 14)
                    layoutParams.height = getHeightInPercent(view.context, 17)
                    view.layoutParams = layoutParams
                } else {
                    view.setBackgroundResource(R.color.item_color_taj_trees)
                    layoutParams.width = getWidthInPercent(view.context, 12)
                    layoutParams.height = getHeightInPercent(view.context, 16)
                    view.layoutParams = layoutParams
                }
            }
        }
    }

我希望高度向顶部扩展,底部应该固定。我尝试过使用scaleX、scaleY,但这只会增加项目内容的大小,而不是项目本身。并且layoutParams.setMargins也不起作用。无论我做什么,顶部似乎都是固定的。谁能提供解决方案吗?

android android-tv onfocus television
1个回答
0
投票

onFocus 有一些内置的缩放类型,您可以使用它

初始化时

ListRowPresenter
在参数中传递focusZoomFactor

ListRowPresenter(FocusHighlight.ZOOM_FACTOR_LARGE, false)

其他缩放系数类型

FocusHighlight.ZOOM_FACTOR_NONE
FocusHighlight.ZOOM_FACTOR_SMALL
FocusHighlight.ZOOM_FACTOR_MEDIUM
FocusHighlight.ZOOM_FACTOR_XSMALL
© www.soinside.com 2019 - 2024. All rights reserved.