我正在制作Android TV应用,在选择状态下有ImageViewCard透明背景问题,请看下图:
我在代码中设置透明背景:
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样式的引用。
答案 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));
这是我认为最简单的方法