繁体   English   中英

Android - 如何实现嵌套按钮

[英]Android - how to implement nested button

我正在开发一个有5个按钮的项目,当我点击它们时,它应该显示另外3个按钮。 当我点击3个按钮中的任何一个时,它应该打开一个活动。

我曾尝试使用MaterialArcMenu它没有给我我需要它给我一个圆形按钮。

我能收到任何关于此的建议吗?

按钮1 --->嵌套按钮1 - >嵌套按钮1

     ---> Nested Button 2    

按钮2

按钮3

按钮4

按钮5

在此输入图像描述

  1. xml文件中有8个按钮。 其中5个是可见的,其中3个是隐藏和禁用的
  2. 让5实现相同的onClickListener(使用xml onClick属性对此最简单)
  3. 让3实现相同的onClickListener(使用xml onClick属性对此最简单)
  4. 在5个按钮的onClickListener中,编写使其他3个按钮可见并启用的代码
  5. 在3个按钮的onClickListener中,编写用于打开新活动的代码

如果您是从布局创建按钮,那么我建议您将活动或片段添加为单击事件侦听器。 其次,为按钮设置标签。 然后,当单击该按钮时,获取视图的标记并相应地处理。

这是一个例子:

 protected CustomImageButton getSmartLinkImageButton(int buttonImageResource, int colorToChangeTo,  boolean isLargerImage, ActionType buttonAction) {
        LayoutInflater inflater = (LayoutInflater) this.getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        SmartLinkImageButton button = (SmartLinkImageButton) inflater.inflate(R.layout.footer_smartlink_image_button, null);

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mFooterButtonWidth, 
                isLargerImage == true ? mFooterButtonHeight / 2 : mFooterButtonHeight);
        params.gravity = Gravity.CENTER;
        button.setLayoutParams(params);

        if(isLargerImage) 
            button.setScaleType(ScaleType.FIT_CENTER);
        button.setImageResource(buttonImageResource);

        if(colorToChangeTo > 0) {
            changeImageViewImageColor(button, null, colorToChangeTo);
            button.setDefaultColorFilter(colorToChangeTo);
        }

        button.setTag(buttonAction); //HERE IS THE TAG CREATION
        button.setOnClickListener(this);

        //optional method for mapping image buttons
        mapImageButton(button, buttonAction);

        inflater = null;
        return button;
    }

然后onClick:

@Override
public void onClick(View view) {            
    view.getTag(); //DO ACTION BASED ON VIEWS TAG
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM