如何将onClicklistener附加到子操作按钮

时间:2015-10-18 17:31:29

标签: android onclicklistener floating-action-button action-button

我实现了一个Float Action按钮,它有5个子动作按钮,使用下面的代码,如何为每个子动作按钮添加一个onClickListener,这样当你点击时应该打开不同的活动。

 SubActionButton.Builder rLSubBuilder = new SubActionButton.Builder(this);
    ImageView rlIcon1 = new ImageView(this);
    ImageView rlIcon2 = new ImageView(this);
    ImageView rlIcon3 = new ImageView(this);
    ImageView rlIcon4 = new ImageView(this);
    ImageView rlIcon5 = new ImageView(this);
    //ImageView rlIcon6 = new ImageView(this);

     rlIcon1.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_contact));
    rlIcon2.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_currency_info));
    rlIcon3.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_exhibition));
    rlIcon4.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_faq));
    rlIcon5.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_info_desk));
    //rlIcon6.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_passport));



    // Build the menu with default options: light theme, 90 degrees, 72dp radius.
    // Set 4 default SubActionButtons
    final FloatingActionMenu rightLowerMenu = new FloatingActionMenu.Builder(this)
            .addSubActionView(rLSubBuilder.setContentView(rlIcon1).build())
            .addSubActionView(rLSubBuilder.setContentView(rlIcon2).build())
            .addSubActionView(rLSubBuilder.setContentView(rlIcon3).build())
            .addSubActionView(rLSubBuilder.setContentView(rlIcon4).build())
            .addSubActionView(rLSubBuilder.setContentView(rlIcon5).build())
            //.addSubActionView(rLSubBuilder.setContentView(rlIcon6).build())
            .attachTo(rightLowerButton)
            .build();

    // Listen menu open and close events to animate the button content view
    rightLowerMenu.setStateChangeListener(new FloatingActionMenu.MenuStateChangeListener() {
        @Override
        public void onMenuOpened(FloatingActionMenu menu) {
            // Rotate the icon of rightLowerButton 45 degrees clockwise
            fabIconNew.setRotation(0);
            PropertyValuesHolder pvhR =  PropertyValuesHolder.ofFloat(View.ROTATION, 90);
            ObjectAnimator animation = ObjectAnimator.ofPropertyValuesHolder(fabIconNew, pvhR);
            animation.start();
        }

        @Override
        public void onMenuClosed(FloatingActionMenu menu) {
            // Rotate the icon of rightLowerButton 45 degrees counter-clockwise
            fabIconNew.setRotation(90);
            PropertyValuesHolder pvhR = PropertyValuesHolder.ofFloat(View.ROTATION, 0);
            ObjectAnimator animation =  ObjectAnimator.ofPropertyValuesHolder(fabIconNew, pvhR);
            animation.start();
        }
    });

}

2 个答案:

答案 0 :(得分:1)

尝试:

SubActionButton button1 = rLSubBuilder.setContentView(rlIcon1).build();
SubActionButton button2 = rLSubBuilder.setContentView(rlIcon2).build();
[...]
SubActionButton buttonN = {...}

button1.setOnClickListener(...);
button2.setOnClickListener(...);
[...]

 final FloatingActionMenu rightLowerMenu = new FloatingActionMenu.Builder(this)
            .addSubActionView(button1)
            .addSubActionView(button2)
            .addSubActionView(rLSubBuilder.setContentView(rlIcon3).build())
            .addSubActionView(rLSubBuilder.setContentView(rlIcon4).build())
            .addSubActionView(rLSubBuilder.setContentView(rlIcon5).build())
            //.addSubActionView(rLSubBuilder.setContentView(rlIcon6).build())
            .attachTo(rightLowerButton)
            .build();

答案 1 :(得分:0)

我假设您正在使用此library。查看source,您可以看到setContentView只是将视图添加到CircularActionMenu的{​​{1}}。因此,设置FrameLayout到您的onClickListeners以开启新活动应该这样做。这就是你的onClickListener应该是什么样子

ImageViews

同样将侦听器附加到其他图像视图