Android - 如何实现嵌套按钮

时间:2016-01-21 16:15:22

标签: android

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

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

我可以就此收到任何建议吗?

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

     ---> Nested Button 2    

按钮2

按钮3

按钮4

按钮5

enter image description here

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

以下是一个例子:

 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
}