I create all navigation items programmatically, because i get data from network.
So, after some struggle, i almost achieved what i need. But i couldn't add menu seperator item.
Btw, it would be useful if you add some sample for adding menu items programmatically.
private void drawNavigations(Headers headers) {
mHeaders = headers;
//clear added items/groups
mMenu.clear();
SublimeGroup mainGroup = mMenu.addGroup(false, false, true, true, SublimeGroup.CheckableBehavior.NONE);
ArrayList<Article> articles = mHeaders.getArticles();
for(int i = 0; i < articles.size(); i++) {
Article article = articles.get(i);
//if article has children, create expandable menu item
if (article.getSubArticles().size() > 0) {
SublimeGroup sublimeGroup = mMenu.addGroup(true, true, true, true, SublimeGroup.CheckableBehavior.NONE);
//title of menu
mMenu.addGroupHeaderItem(sublimeGroup.getGroupId(), article.getTitle(), article.getDescription(), false);
//create & add new item with self path, to open parent article
Article allArticleItem = new Article();
allArticleItem.setTitle("All").setPath(article.getPath());
mHeaders.getArticles().get(i).getSubArticles().add(0, allArticleItem);
//add children
ArrayList<Article> subArticles = article.getSubArticles();
for(int i1 = 0; i1 < subArticles.size(); i1++) {
Article subArticle = subArticles.get(i1);
SublimeBaseMenuItem sublimeBaseMenuItem = mMenu.addTextItem(sublimeGroup.getGroupId(), subArticle.getTitle(), subArticle.getDescription(), true);
//set navId, to handle click
mHeaders.getArticles().get(i).getSubArticles().get(i1).setNavigationId(sublimeBaseMenuItem.getItemId());
}
} else { // else just text item
mMenu.addTextItem(mainGroup.getGroupId(), article.getTitle(), article.getDescription(), false);
}
}
SublimeGroup lastGroup = mMenu.addGroup(false, false, true, true, SublimeGroup.CheckableBehavior.NONE);
mMenu.addSeparatorItem(lastGroup.getGroupId()); //(doesn't work)
settingsBaseMenu = mMenu.addTextItem(lastGroup.getGroupId(), getString(R.string.preferences_title), null, true);
settingsBaseMenu.setIcon(R.drawable.ic_settings);
sloganView.setText(mHeaders.getSlogan());
mMenu.finalizeUpdates();
}
<com.appeaser.sublimenavigationviewlibrary.SublimeNavigationView
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigation"
android:layout_width="304dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:background="@color/white"
app:snvHeaderLayout="@layout/navigation_header"
app:snvMenu="@menu/navigation"/>
I didn't add settings menu item and seperator item to xml because there is no api for adding groups before other items/groups.
Thanks.