Как настроить выбранный RowPresenter для 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>
- Как я могу увеличить размер выбранной карты больше, чем размер по умолчанию?
- Как я могу поместить белую рамку вокруг выбранной карты, чтобы она плавно покрывала все края?
1 ответ
- Как я могу увеличить размер выбранной карты больше, чем размер по умолчанию?
Вы можете сделать это, передав больший коэффициент масштабирования FocusHighlight при инициализации ListRowPresenter
, Вы можете инициализировать своего докладчика с помощью FocusHighlight#ZOOM_FACTOR_LARGE
для больших сфокусированных карт. ListRowPresenter
имеет этот конструктор.
- Как я могу поместить белую рамку вокруг выбранной карты, чтобы она плавно покрывала все края?
Вы можете предоставить свой собственный подкласс BaseCardView
(или же ImageCardView
), где вы предоставляете свой собственный макет. Когда у вас есть собственный макет, у вас не будет никаких ограничивающих факторов. Если вы посмотрите на эту папку в примере приложения leanback-showcase, есть много примеров пользовательских карточек.
Это охватывает очень простой пример
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
, Там вы можете добавить границы и все, что вы хотите.