7

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

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

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

在此处输入图像描述

更新

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

4

2 回答 2

17

首先,您不应该仅使用此库来实现卡内的溢出菜单。

也就是说,support Library中的CardView是一个FrameLayout,后面有任何model。实现它的最好方法,现在是Toolbar在 CardView 布局中使用新的。

您也可以ImageViewCardView布局内添加一个并执行以下操作:

PopupMenu popup = new PopupMenu(getContext(), mImageButton);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.your_menu, popup.getMenu());

最后(但不是那么重要)如果还不够,新的cardlib(即将推出)将使用支持库中的 CardView。

于 2014-10-29T15:40:41.440 回答
4

以下是如何在android.support.v7.widget.CardView. 在我的示例中,它是 RecyclerView 内的卡片视图,因此我在适配器中的 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());
    }

    ...
}
于 2016-02-03T00:26:11.943 回答