如何在Android中的卡中添加溢出图标项

时间:2014-10-29 11:02:40

标签: android cardslib

您好我正在尝试使用支持库https://developer.android.com/reference/android/support/v7/widget/CardView.html创建这样的布局,但我没有找到在卡片中添加溢出图标的方法。

我不想使用这个库https://github.com/gabrielemariotti/cardslib/blob/master/doc/CARDGRID.md。我想使用Google最近推出的支持库来做同样的事情。

是否有办法实现使用支持库,或者我必须使用gabrielemariotti库在卡片视图中添加溢出项目。

enter image description here

更新

伙计们我现在已经编辑了问题,我想要的更清楚。

2 个答案:

答案 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());
    }

    ...
}