leanback:ImageViewCard如何使信息块透明?

时间:2018-05-27 20:36:16

标签: android android-tv leanback

我正在制作Android TV应用,在选择状态下有ImageViewCard透明背景问题,请看下图:

enter image description here

我在代码中设置透明背景:

override fun onCreateViewHolder(parent: ViewGroup): ViewHolder {
    Log.d(TAG, "onCreateViewHolder")
    val v = ImageCardView(parent.context)
    v.background = ColorDrawable(parent.context.resources.getColor(R.color.trans))
    v.isFocusable = true
    v.infoAreaBackground = ColorDrawable(parent.context.resources.getColor(R.color.trans))
    v.isFocusableInTouchMode = true
    v.cardType = BaseCardView.CARD_TYPE_INFO_UNDER
    v.setInfoAreaBackgroundColor(parent.context.resources.getColor(R.color.trans))
    v.setBackgroundColor(parent.context.resources.getColor(R.color.trans))

    v.setOnFocusChangeListener({ view: View, b: Boolean ->
        v.background = ColorDrawable(parent.context.resources.getColor(R.color.trans))
        v.isFocusable = true
        v.infoAreaBackground = ColorDrawable(parent.context.resources.getColor(R.color.trans))
        v.infoAreaBackground = ColorDrawable(parent.context.resources.getColor(R.color.trans))
    })

这样做的正确方法是什么?如何为选定状态制作透明背景? 欢迎任何对ImageCardView样式的引用。

3 个答案:

答案 0 :(得分:1)

您可以做的两件事

第一件事:-

 cardView.setInfoVisibility(View.GONE);

第二件事:- 为此,您需要进行自定义卡片。 这是简短的介绍。

第1步:在布局中创建一个view_holder.xml文件。

步骤2:创建一个Cardview扩展BindableCardView <“ custom object”>      a)在这里,您将获得bind(“ custom object”)重写方法      b)这是另一种方法

@Override
protected int getLayoutResource() {
    return R.layout.episode_card_view;
} 

第3步:创建一个扩展Presenter的类(例如CustomePresenter.class)

public class EpisodeCardRepresenter extends Presenter{ @Override
public ViewHolder onCreateViewHolder(final ViewGroup parent) {
    return new ViewHolder(new CardView);
}

@Override
public void onBindViewHolder(final ViewHolder viewHolder, Object item) {
    ((CardView) viewHolder.view).bind(("custom object") item);

}}

第3步:然后将此演示者添加到  新的ArrayObjectAdapter(新的CustomePresenter())

完成快乐编码:)

答案 1 :(得分:0)

所以,我发现了什么问题。将我的卡添加到ListRowPresenter中。要在内部看不到这样的项目,必须调用setShadowEnabled(false) - 在Java中或在Kotlin中设置属性

val lrp = ListRowPresenter()
lrp.shadowEnabled = false

答案 2 :(得分:0)

您可以在CardPresenter的onBindViewHolder方法上进行操作

((ImageCardView) viewHolder.view).setInfoAreaBackgroundColor(ContextCompat.getColor(mContext, R.color.lb_tv_white));

这是我认为最简单的方法