Help Center/ Meeting/ Client SDK Reference/ Android SDK/ APIs/ UI Customization/ Customizing a Menu on the Participants Screen
Updated on 2024-12-27 GMT+08:00

Customizing a Menu on the Participants Screen

This API is used to customize the following menus on the Participants screen:

1. buildParticipantMoreMenuItems: customizes the menu items (area 1 in Figure 1) on the right of the title bar.

2. buildParticipantItemMenuItems: customizes the menu (Figure 2) displayed when a user touches a participant (area 2 in Figure 1) in the participant list.

3. buildParticipantToolbarMenuItems: customizes the bottom menu bar (area 3 in Figure 1) of the Participants screen during a meeting.

4. buildParticipantToolbarMoreMenuItems: customizes the menu (Figure 3) displayed when a user touches More (area 4 in Figure 1) at the bottom.

5. buildWaitingToolbarMenuItems: customizes the menu bar (in the red box in Figure 4) at the bottom of the Waiting screen.

6. buildUnJoinedToolbarMenuItems: customizes the menu bar (in the red box in Figure 5) at the bottom of the Absent screen.

Application Scenarios

Menu items in the six areas on the Participants screen need to be customized.

Precautions

1. sdkConfig takes effect only when this configuration is passed during SDK initialization.

Customizing the Menu Items on the Participants Screen

Sample Code

1
sdkConfig.setParticipantMenuStrategy(new CustomParticipantMenuHandle());

Figure 1 Menu areas in the Participants screen

Customizing a More Menu in the Participants List

Figure 2 Customizing a More menu in the Participants list
Figure 3 Sample of a custom More menu in the participants list
Figure 4 Customizing a menu in the waiting member list
Figure 5 Customizing a menu in the absent participant list

Sample Code

public class CustomParticipantMenuHandle implements IParticipantMenuStrategy {
    @Override
    public List<IConfMenu> buildParticipantMoreMenuItems() {
        List<IConfMenu> confMenus = new ArrayList<>();
        confMenus.add(new ParticipantShareMenu());
        confMenus.add(new ContantMenu());
        // [Demo] Add a custom menu.
        confMenus.add(new CustomMoreMenu());
        return confMenus;
    }
    @Override
    public List<IConfMenu> buildParticipantItemMenuItems() {
        List<IConfMenu> confMenus = new ArrayList<>();
        // Group 1
        confMenus.add(new MuteOrUnmuteMenu());// Mute
        confMenus.add(new CameraMenu());// Video
        confMenus.add(new HandsUpOrDownMenu().setDarkIcon(true));// Raise hand
        confMenus.add(new SelectWatchOrCacnelMenu());// Focus
        confMenus.add(new PrivateChatMenu());// Direct message
        confMenus.add(new SharingBroadcastAndCancelMenu());// Broadcast sharing
        confMenus.add(new BroastAndCacelMenu());// Broadcast video
        // Group 2
        confMenus.add(new RenameMenu());// Rename
        confMenus.add(new InviteOrCancelShareMenu());// Invite to share or cancel sharing
        confMenus.add(new GrantOrCancelLocalRecordMenu());// Allow or forbid local recording
        confMenus.add(new SetAttendeeMenu());// Set as panelist
        confMenus.add(new ReleaseOrRequestChairManMenu());// Apply to be host or relinquish host role
        confMenus.add(new SetChairmanMenu());// Set as host
        confMenus.add(new SetOrCancelCoHostMenu());// Set or unassign as co-host
        confMenus.add(new MoveToWaitingRoomMenu()); // Move to waiting room
        confMenus.add(new RecallMenu());// Recall
        if (HWMBizSdk.getPublicConfigApi().isChinaSite()) {
            confMenus.add(new CallOtherNumberMenu());// Call other number
        }
        // Group 3
        confMenus.add(new HangupMenu());// Disconnect
        confMenus.add(new AdmitMenu());// Admit
        confMenus.add(new AutoAdmitMenu());// Auto admit
        confMenus.add(new RemoveMenu());// Remove

        // [Demo] Add a custom menu.
        confMenus.add(new CustomMoreMenu());
        return confMenus;
    }
    @Override
    public List<IConfMenu> buildParticipantToolbarMenuItems() {
        List<IConfMenu> confMenus = new ArrayList<>();
        //--------------Menus available only for hosts-------------
        // Mute all
        confMenus.add(new MuteAllMenu());
        // Unmute all
        confMenus.add(new CancelAllMuteMenu());
        // More
        confMenus.add(new MoreMenu());
        //--------------Menus available only for non-host users-------------
        // Raise hand
        confMenus.add(new HandsupMenu());
        // Lower hand
        confMenus.add(new HandsDownMenu());
        // Apply to be host
        confMenus.add(new RequestChairmanMenu());
        //-----------Demo of adding a custom menu----------
        confMenus.add(new CustomMenu());
        return confMenus;
    }
    @Override
    public List<IConfMenu> buildWaitingToolbarMenuItems() {
        List<IConfMenu> confMenus = new ArrayList<>();
        confMenus.add(new AdmitAllMenu());
        confMenus.add(new RemoveAllMenu());
        return confMenus;
    }
    @Override
    public List<IConfMenu> buildUnJoinedToolbarMenuItems() {
        List<IConfMenu> confMenus = new ArrayList<>();
        confMenus.add(new CallAllMenu());
        return confMenus;
    }
    @Override
    public List<IConfMenu> buildParticipantToolbarMoreMenuItems() {
        List<IConfMenu> confMenus = new ArrayList<>();
        confMenus.add(new ReleaseOrRequestChairManMenu());
        confMenus.add(new AllowUnmuteOrNotMenu());
        confMenus.add(new LockOrUnlockConfMenu());
        // [Demo] Add a custom menu.
        confMenus.add(new CustomMoreMenu());
        return confMenus;
    }
}