- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为将进入学校应用程序的 list 创建卡片 View 。 ArrayList 中的所有项目都进入一张卡片,我无法弄清楚为什么。我已经看过我能找到的每一个教程,但没有运气。这是相关代码。非常感谢任何帮助。
Activity
recyclerView = (RecyclerView) findViewById(R.id.masterListRecView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
theList = new ArrayList<MasterListItem>();
theList.add(new MasterListItem("Test Item1",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item2",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item3",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item4",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item5",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item6",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item7",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item8",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item9",new Date(),new Date(),"here are some notes",false));
theList.add(new MasterListItem("Test Item10",new Date(),new Date(),"here are some notes",false));
masterListAdapter = new RecViewAdapter(theList);
recyclerView.setAdapter(masterListAdapter);
masterListAdapter.notifyDataSetChanged();
回收 View 适配器
public class RecViewAdapter extends RecyclerView.Adapter<RecViewAdapter.MyViewHolder> {
TextView title;
TextView dueDate;
TextView completedDate;
TextView notes;
CheckBox completed;
private ArrayList<MasterListItem> theList;
//private LayoutInflater inflater;
public RecViewAdapter(ArrayList<MasterListItem> theList) {
this.theList = theList;
//inflater = LayoutInflater.from(context);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.master_list_item,parent,false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
title = holder.title;
dueDate = holder.dueDate;
completedDate = holder.completedDate;
notes = holder.notes;
completed = holder.completed;
title.setText(theList.get(position).getTitle());
dueDate.setText(theList.get(position).getDueDate().toString());
completedDate.setText(theList.get(position).getCompletedDate().toString());
notes.setText(theList.get(position).getNotes());
completed.setChecked(theList.get(position).isCompleted());
}
@Override
public int getItemCount() {
return theList.size();
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private TextView title;
private TextView dueDate;
private TextView completedDate;
private TextView notes;
private CheckBox completed;
public MyViewHolder(View itemView){
super(itemView);
this.title = (TextView) itemView.findViewById(R.id.masterListTitle);
this.dueDate = (TextView) itemView.findViewById(R.id.masterListDueDate);
this.completedDate = (TextView) itemView.findViewById(R.id.masterListCompletedDate);
this.notes = (TextView) itemView.findViewById(R.id.masterListNotes);
this.completed = (CheckBox) itemView.findViewById(R.id.masterListCompleted);
}
}
}
回收 View XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="edu.uco.weddingcrashers.hitched.MasterWeddingList">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/addTaskButton"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:id="@+id/masterListRecView"
>
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
卡片 XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:id="@+id/masterListCardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
card_view:cardCornerRadius="4dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<!--
android:layout_alignParentStart="true"
android:layout_gravity="center"
android:layout_below="@+id/addTaskButton"
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/masterListTitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="test title" />
<TextView
android:id="@+id/masterListDueDate"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="test title" />
<TextView
android:id="@+id/masterListCompletedDate"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="test title" />
<TextView
android:id="@+id/masterListNotes"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="test title" />
<CheckBox
android:id="@+id/masterListCompleted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Completed"
android:editable="false"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</android.support.v7.widget.CardView>
再次感谢您!
最佳答案
您必须在 RecyclerView
项之间添加分隔符。给 RecyclerView 添加分隔符和装饰,与其他 ListView 不同。您可以通过以下答案实现此目的:
与ListView不同,RecyclerView类没有divider相关的参数。相反,您需要扩展 ItemDecoration , RecyclerView 的内部类:
An ItemDecoration allows the application to add a special drawing and layout offset to specific item views from the adapter's data set. This can be useful for drawing dividers between items, highlights, visual grouping boundaries and more.
All ItemDecorations are drawn in the order they were added, before the item views (in
onDraw()
and after the items (inonDrawOver(Canvas,
.
RecyclerView, RecyclerView.State)
垂直间距ItemDecoration扩展 ItemDecoration,添加以空间高度为参数的自定义构造函数并覆盖 getItemOffsets()
:
public class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {
private final int mVerticalSpaceHeight;
public VerticalSpaceItemDecoration(int mVerticalSpaceHeight) {
this.mVerticalSpaceHeight = mVerticalSpaceHeight;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
RecyclerView.State state) {
outRect.bottom = mVerticalSpaceHeight;
}
}
如果您不想在最后一项下方插入空格,请添加以下条件:
if (parent.getChildAdapterPosition(view) !=
parent.getAdapter().getItemCount() - 1) {
outRect.bottom = mVerticalSpaceHeight;
}
注意:您还可以修改 outRect.top、outRect.left 和 outRect.right 属性以获得所需的效果。
分隔项装饰扩展 ItemDecoration 并覆盖 onDraw()
:
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
private static final int[] ATTRS = new int[]{android.R.attr.listDivider};
private Drawable mDivider;
/**
* Default divider will be used
*/
public DividerItemDecoration(Context context) {
final TypedArray styledAttributes = context.obtainStyledAttributes(ATTRS);
mDivider = styledAttributes.getDrawable(0);
styledAttributes.recycle();
}
/**
* Custom divider will be used
*/
public DividerItemDecoration(Context context, int resId) {
mDivider = ContextCompat.getDrawable(context, resId);
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
View child = parent.getChildAt(i);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
int top = child.getBottom() + params.bottomMargin;
int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
}
您可以调用使用默认 Android 分频器属性的第一个构造函数,或者调用使用您自己的 drawable 的第二个构造函数,例如 drawable/divider.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:height="1dp" />
<solid android:color="#ff992900" />
</shape>
注意:如果您希望在项目上绘制分隔线,请改写 onDrawOver()
。
要使用新类,请将 VerticalSpaceItemDecoration 或 DividerSpaceItemDecoration 添加到 RecyclerView,例如在 fragment 的 onCreateView()
中:
private static final int VERTICAL_ITEM_SPACE = 48;
private RecyclerView mUiRecyclerView;
private LinearLayoutManager mLinearLayoutManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_feed, container, false);
mUiRecyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_home_recycler_view);
mLinearLayoutManager = new LinearLayoutManager(getActivity());
mUiRecyclerView.setLayoutManager(mLinearLayoutManager);
//add ItemDecoration
mUiRecyclerView.addItemDecoration(new VerticalSpaceItemDecoration(VERTICAL_ITEM_SPACE));
//or
mUiRecyclerView.addItemDecoration(
new DividerItemDecoration(getActivity());
//or
mUiRecyclerView.addItemDecoration(
new DividerItemDecoration(getActivity(), R.drawable.divider));
mUiRecyclerView.setAdapter(...);
return rootView;
}
还有 Lucas Rocha 的库,可以简化元素的装饰过程。虽然还没有尝试过。
它的特点是:
一组库存元素装饰品,包括:
关于android - Cardview 全部进入一张卡片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35262066/
让我们开始吧,3 个类(Card、Start、Deckofcards) 1° 卡: public class Card { private String type; private i
我要创建一个二十一点游戏,我正在尝试弄清楚如何发牌并让它显示值和名称。我选择两个属性的原因纯粹是基于逻辑,当涉及到将 A 视为 1 或 11 时。还没有达到这一点,只是想如果有人想知道的话我会包括在内
我正在尝试使用 twitter 元标记(以及 Facebook 等其他网站的 Open Graph)创建 Twitter 卡片。当我看到来自其他人(例如 NPR 新闻)的推特提要时,卡片会默认展开。
我正在开发一个玩基本扑克游戏的程序,但这并不重要。我有一组 52 张牌,包含花色和等级。我想打印 4 行 13 行的值(花色和等级)。这可能是一个简单的问题,但我整天都在努力解决这个问题。因此,我非常
我开发了一个包含三列(两列相等,一列较小)的网格。我的问题是我无法在卡片上设置高度,我在 px 中使用了它们并且它起作用了,但这不是最好的方法。我希望这三列具有相同的高度(页面的 100%)并且一些卡
我在 4 个不同的列中开发了 4 个 Bootstrap 卡。在每张卡片中,我创建了一张包含某种类型信息的新卡片。 我的问题是,当我缩小屏幕尺寸(响应测试)时,文本会从卡片中溢出。我的问题是什么,我该
我怎样才能达到 固定高度 具有垂直可滚动 的 bootstrap 4 卡卡片文字部分? Card title This portion and
在我的程序中,我有一个大 Canvas ,我在其中提取多个选定区域并将这些区域绘制到单独的新小 Canvas 上。 我想使用此 API 将新创建的 Canvas 作为附件发布到 trello POST
我想在卡片 View 中显示联系信息,如果需要,应该调整卡片 View 的大小以包含所有信息。 这是布局部分: 但是 an
这是我的card_view。我已经提到了 card_view:cardElevation。但是仍然没有显示阴影。 我搜索了很多链接。他们在任何地方都提到要使用 card_view:cardElevat
我正在使用此处的框架 - cardsui 如何在卡片顶部添加分享按钮。我已经使用点击方法在 xml 中实现了它,但是当我按下它时应用程序崩溃并说该方法不存在(是的,我将该方法添加到主 java 文件中
我正在将 cardview 与 recycler view 一起使用。但早些时候我使用相同的代码来做事没有任何问题。但现在我正在使用 fragment 。现在我得到卡片 View 之间的距离更大。我的
我的卡片 View 设置如下: android:layout_marginTop="2dp" android:layout_marginLeft="6dp" android:layout_margin
我正在制作一个二十一点游戏,并创建了一个数组来充当用户发牌的手牌。我希望能够对其进行排序,以便手按数字顺序排序,这样可以更简单地确定用户的手的类型。这是我的卡片结构: struct ACard{
我希望在一个运行在 Wordpress 上的网站上实现 Twitter Cards(关于 Twitter Cards 的文档在这里:https://dev.twitter.com/docs/cards
我需要帮助解决这个难题。在 bootstrap 4.1 中使用卡片列和卡片时,当我不想这样做时,行会中断。我将列数设置为 4,当有 4 张卡片时,它看起来很完美。当添加第五张牌时,它会将行分成顶部的
我有一个 android ListView ,它显示类似卡片的 View ,正如您在这张图片中看到的,我的卡片之间有一条灰色细线: 我怎样才能摆脱灰线? 我实现这个卡片 View 的xml是这样的:
我正在尝试添加带有回收站 View 的卡片 View 。但它没有显示任何内容,只是一个空白 View 。 我在这里看到了这方面的问题,它有为回收站 View 和卡片 View 添加依赖项的答案。这出现
我在 android 中通过回收站 View 实现卡片 View ,但我的卡片 View 没有显示。我正在使用自定义适配器将数据填充到卡片 View 。我已经尝试了所有方法,但没有显示卡片 View
在我的应用程序中,我有一个卡片 View ,其中包含一个 TextView 和一个按钮,该按钮最初是隐藏的,当单击卡片 View 时,会显示该按钮。我不知道如何在显示按钮时将其设置为动画。任何人都可以
我是一名优秀的程序员,十分优秀!