如何为 Android 电视自定义选定的 RowPresenter
How to customize selected RowPresenter for Android TV
我想增加所选 RowPresenter
的大小并在 BrowseFragment
中在其周围放置一个白色边框。我尝试按照以下方式放置边框,但它的边缘适合我的卡片,因为我正在为我的卡片使用圆角。
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);
}
}
下面是我如何使卡片的角变圆的代码:
<dimen name="lb_rounded_rect_corner_radius">10dp</dimen>
- 如何将所选卡片的大小增加到超过默认缩放大小?
- 如何在我选择的卡片周围放置白色边框,使其平滑地覆盖所有边缘?
- How can I increase size of selected card more than default zooming size?
您可以通过在初始化 ListRowPresenter
时传入更大的 FocusHighlight 缩放系数来实现。对于较大的重点卡片,您可以使用 FocusHighlight#ZOOM_FACTOR_LARGE
初始化演示者。 ListRowPresenter
有 this constructor.
- How can I put white border around my selected card, so that it covers all edges smoothly?
您可以提供自己的 BaseCardView
(或 ImageCardView
)子类,您可以在其中提供自己的布局。当您拥有自己的布局时,您将没有任何限制因素。如果您查看 leanback-showcase 示例应用程序中的 this folder,有很多自定义卡片的示例。
这涵盖了一个非常简单的例子
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);
}
}
您在哪里提供自己的 xml 文件而不是 R.layout.your_card_xml
。在那里你可以添加边框和任何你想要的东西。
我想增加所选 RowPresenter
的大小并在 BrowseFragment
中在其周围放置一个白色边框。我尝试按照以下方式放置边框,但它的边缘适合我的卡片,因为我正在为我的卡片使用圆角。
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);
}
}
下面是我如何使卡片的角变圆的代码:
<dimen name="lb_rounded_rect_corner_radius">10dp</dimen>
- 如何将所选卡片的大小增加到超过默认缩放大小?
- 如何在我选择的卡片周围放置白色边框,使其平滑地覆盖所有边缘?
- How can I increase size of selected card more than default zooming size?
您可以通过在初始化 ListRowPresenter
时传入更大的 FocusHighlight 缩放系数来实现。对于较大的重点卡片,您可以使用 FocusHighlight#ZOOM_FACTOR_LARGE
初始化演示者。 ListRowPresenter
有 this constructor.
- How can I put white border around my selected card, so that it covers all edges smoothly?
您可以提供自己的 BaseCardView
(或 ImageCardView
)子类,您可以在其中提供自己的布局。当您拥有自己的布局时,您将没有任何限制因素。如果您查看 leanback-showcase 示例应用程序中的 this folder,有很多自定义卡片的示例。
这涵盖了一个非常简单的例子
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);
}
}
您在哪里提供自己的 xml 文件而不是 R.layout.your_card_xml
。在那里你可以添加边框和任何你想要的东西。