您好我正在尝试使用支持库https://developer.android.com/reference/android/support/v7/widget/CardView.html创建这样的布局,但我没有找到在卡片中添加溢出图标的方法。
我不想使用这个库https://github.com/gabrielemariotti/cardslib/blob/master/doc/CARDGRID.md。我想使用Google最近推出的支持库来做同样的事情。
是否有办法实现使用支持库,或者我必须使用gabrielemariotti库在卡片视图中添加溢出项目。
伙计们我现在已经编辑了问题,我想要的更清楚。
答案 0 :(得分:17)
首先你不应该使用这个lib 来实现卡内的溢出菜单。
说,支持库中的CardView是 FrameLayout ,后面有任何模型。
实现它的最佳方法是使用CardView布局中的新Toolbar
。
您还可以在ImageView
布局中添加CardView
并执行以下操作:
PopupMenu popup = new PopupMenu(getContext(), mImageButton);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.your_menu, popup.getMenu());
最后(但不是那么重要)如果还不够,新的cardlib(即将推出)将使用支持库中的CardView。
答案 1 :(得分:4)
以下是如何在android.support.v7.widget.CardView
中正确执行此操作。在我的例子中,它是一个在RecyclerView中的cardview,所以我在适配器中,在onBindViewHolder方法中设置它:
public class DashboardItemAdapter extends RecyclerView.Adapter<DashboardItemAdapter.ViewHolder> {
ArrayList<Item> mItems = new ArrayList<>();
private Context mContext;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
mContext = parent.getContext();
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_dashboard, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder vh, int position) {
final Item item = mItems.get(position);
...
PopupMenu popup = new PopupMenu(mContext, vh.btnMenu);
popup.inflate(R.menu.dashboard_card_waiting);
popup.setOnMenuItemClickListener(item -> {
switch (item.getItemId()) {
case R.id.action_cancel:
cancelItem();
return true;
default:
return true;
}
});
vh.btnMenu.setOnClickListener(btn -> popup.show());
}
...
}