2

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. 選択したカードのサイズをデフォルトのズーム サイズより大きくするにはどうすればよいですか?
  2. 選択したカードの周りに白い枠を付けて、すべての端を滑らかに覆うにはどうすればよいですか?
4

1 に答える 1

4
  1. 選択したカードのサイズをデフォルトのズーム サイズより大きくするにはどうすればよいですか?

を初期化するときに、より大きな FocusHighlight ズーム係数を渡すことでこれを行うことができますListRowPresenterFocusHighlight#ZOOM_FACTOR_LARGEより大きなフォーカス カードのプレゼンターを初期化できます。ListRowPresenterにはこのコンストラクタがあります。

  1. 選択したカードの周りに白い枠を付けて、すべての端を滑らかに覆うにはどうすればよいですか?

独自のレイアウトを提供する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。そこでは、境界線やその他の必要なものを追加できます。

于 2016-11-07T16:04:08.180 に答える