自定义控件+CircularFloatingActionMenu

本文介绍了如何在Android中结合CircularFloatingActionMenu自定义组件,解决自定义过程中遇到的bug,并提供了详细步骤。通过修改FloatingActionButton的位置和背景,实现了带有文本说明的功能。同时,讲解了如何实现菜单的打开、关闭监听,以及通过接口处理菜单项的点击事件,确保在不同界面中可复用。
摘要由CSDN通过智能技术生成

       自定义组件结合了CircularFloatingActionMenu之后出现过很多bug,所以想借csdn这个平台做一下笔记。

效果图  :

 

 

1,自定义控件view_settelment.xml文件:

    <TextView
        android:id="@+id/tvSettlement"
        style="@style/w22"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_centerInParent="true"
        android:layout_marginBottom="11dp"
        android:background="@drawable/owe_circle_btn_green"
        android:gravity="center"
        android:text="按钮" />

2,自定义控件SettlementView.java文件:

 

  public class SettlementView extends RelativeLayout implements View.OnClickListener, FloatingActionMenu.MenuStateChangeListener {
    private Context mContext;
    private TextView tvSettlement;
    private View cash, qrCode, refuse;
    private RelativeLayout rlQRCode;
    private RelativeLayout rlCash;
    private RelativeLayout rlRefuse;

    private FloatingActionButton floatButton;
    private FloatingActionMenu floatMenu;
    private ImageView fabIconNew;

    private OnItemClickListener onItemClickListener;

    private ShowBGListener showBGListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public void setShowBGListener(ShowBGListener showBGListener) {
        this.showBGListener = showBGListener;
    }

    public SettlementView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;
        //todo:加载布局
        LayoutInflater.from(context).inflate(R.layout.view_settelment, this);
        //todo:获取控件
        tvSettlement = (TextView) findViewById(R.id.tvSettlement);

        tvSettlement.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                showBGListener.ShowBGListener();
                initViews();
                initData();
                initListener();
                showFloat();
            }
        });
    }

    private void initViews() {
        cash = View.inflate(mContext, R.layout.item_cash, null);
        rlCash = (RelativeLayout) cash.findViewById(R.id.rlCash);
        qrCode = View.inflate(mContext, R.layout.item_qr_code, null);
        rlQRCode = (RelativeLayout) qrCode.findViewById(R.id.rlQRCode);
        refuse = View.inflate(mContext, R.layout.item_refuse, null);
        rlRefuse = (RelativeLayout) refuse.findViewById(R.id.rlRefuse);
    }

    public void initData() {
        fabIconNew = new ImageView(mContext);
        fabIconNew.setImageDrawable(getResources().getDrawable(R.mipmap.owe_fork));
        floatButton = new FloatingActionButton.Builder(mContext)
                .setContentView(fabIconNew)
                .build();
        floatMenu = new FloatingActionMenu.Builder(mContext)
                .addSubActionView(refuse)
                .addSubActionView(cash)
                .addSubActionView(qrCode)
                .attachTo(floatButton)
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值