简体   繁体   English

如何为Android TV自定义选定的RowPresenter

[英]How to customize selected RowPresenter for Android TV

I want to increase size of selected RowPresenter and put a white border around it in BrowseFragment . 我想增加所选RowPresenter大小,并在BrowseFragment在其周围放一个白色边框。 I tried following to put border but its edge are fitting my card as I am using rounded corner for my cards. 我尝试跟随放置边框,但是其边缘正适合我的卡片,因为我正在为卡片使用圆角。

private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
    @Override
    public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
                               RowPresenter.ViewHolder rowViewHolder, Row row) {
                ImageCardView cardView = (ImageCardView) itemViewHolder.view;
                GradientDrawable border = new GradientDrawable();
                border.setStroke(10, ContextCompat.getColor(getActivity(), R.color.white));
                cardView.getMainImageView().setImageDrawable(border);
  }
}

Below is code how I am making my card's corner rounded: 以下是我如何使卡的角变圆的代码:

<dimen name="lb_rounded_rect_corner_radius">10dp</dimen>
  1. How can I increase size of selected card more than default zooming size? 如何将所选卡的大小增加到超过默认缩放大小?
  2. How can I put white border around my selected card, so that it covers all edges smoothly? 如何在所选卡周围放置白色边框,以使其平滑地覆盖所有边缘?
  1. How can I increase size of selected card more than default zooming size? 如何将所选卡的大小增加到超过默认缩放大小?

You can do this by passing in a larger FocusHighlight zoom factor when initializing your ListRowPresenter . 您可以通过在初始化ListRowPresenter时传入更大的FocusHighlight缩放系数来ListRowPresenter You can initialize your presenter with the FocusHighlight#ZOOM_FACTOR_LARGE for the larger focused cards. 您可以使用FocusHighlight#ZOOM_FACTOR_LARGE来初始化聚焦较大的卡片的FocusHighlight#ZOOM_FACTOR_LARGE者。 ListRowPresenter has this constructor . ListRowPresenter具有此构造函数

  1. How can I put white border around my selected card, so that it covers all edges smoothly? 如何在所选卡周围放置白色边框,以使其平滑地覆盖所有边缘?

You can provide your own subclass of BaseCardView (or ImageCardView ) where you supply your own layout. 您可以提供自己的BaseCardView (或ImageCardView )子类, BaseCardView在其中提供自己的布局。 When you have your own layout, you won't have any limiting factors. 拥有自己的布局时,您将没有任何限制因素。 If you look at this folder in the leanback-showcase sample app, there are many examples of custom cards. 如果您在leanback-showcase示例应用程序中查看此文件夹 ,则有许多自定义卡片的示例。

This covers a very simple example 这涵盖了一个非常简单的示例

public class YourCardView extends BaseCardView {

    public YourCardView(Context context) {
        super(context, null, R.style.TextCardStyle);
        LayoutInflater.from(getContext()).inflate(R.layout.your_card_xml, this);
        setFocusable(true);
    }
}

Where you supply your own xml file instead of R.layout.your_card_xml . 您在此处提供自己的xml文件而不是R.layout.your_card_xml There you can add borders and whatever else you'd like. 在那里,您可以添加边框以及其他所需的内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM