2016-11-04 1 views
1

Je veux augmenter la taille du RowPresenter sélectionné et mettre une bordure blanche autour de celui-ci en BrowseFragment. J'ai essayé de suivre pour mettre la bordure mais son bord correspond bien à ma carte car j'utilise un coin arrondi pour mes cartes.Comment personnaliser la sélection de RowPresenter pour Android TV

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); 
    } 
} 

Code est ci-dessous comment je fais le coin de ma carte arrondie:

<dimen name="lb_rounded_rect_corner_radius">10dp</dimen> 
  1. Comment puis-je augmenter la taille de la carte sélectionnée plus de taille par défaut de zoom?
  2. Comment est-ce que je peux placer la bordure blanche autour de ma carte choisie, de sorte qu'elle couvre tous les bords doucement?

Répondre

1
  1. Comment puis-je augmenter la taille de la carte sélectionnée plus de taille par défaut de zoom?

Vous pouvez le faire en passant dans un facteur de zoom FocusHighlight plus lors de l'initialisation de votre ListRowPresenter. Vous pouvez initialiser votre présentateur avec le FocusHighlight#ZOOM_FACTOR_LARGE pour les cartes plus grandes. ListRowPresenter a this constructor.

  1. Comment puis-je mettre liseré blanc autour de ma carte sélectionnée, de sorte qu'il couvre tous les bords en douceur?

Vous pouvez fournir votre propre sous-classe de BaseCardView (ou ImageCardView) où vous fournissez votre propre mise en page. Lorsque vous avez votre propre mise en page, vous n'aurez aucun facteur limitatif. Si vous regardez this folder dans l'exemple d'application leanback-showcase, il existe de nombreux exemples de cartes personnalisées.

Cela couvre un exemple très simple

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); 
    } 
} 

Où vous fournissez votre propre fichier xml au lieu de R.layout.your_card_xml. Là, vous pouvez ajouter des frontières et tout ce que vous voulez.