diff --git a/Sample/src/main/java/com/luseen/spacenavigationview/MainActivity.java b/Sample/src/main/java/com/luseen/spacenavigationview/MainActivity.java
index f1f9417..0369be2 100644
--- a/Sample/src/main/java/com/luseen/spacenavigationview/MainActivity.java
+++ b/Sample/src/main/java/com/luseen/spacenavigationview/MainActivity.java
@@ -29,7 +29,7 @@ protected void onCreate(Bundle savedInstanceState) {
spaceNavigationView = (SpaceNavigationView) findViewById(R.id.space);
spaceNavigationView.initWithSaveInstanceState(savedInstanceState);
spaceNavigationView.addSpaceItem(new SpaceItem("HOME", R.drawable.account));
- spaceNavigationView.addSpaceItem(new SpaceItem("SEARCH", R.drawable.magnify));
+ spaceNavigationView.addSpaceItem(new SpaceItem("SEARCH", R.drawable.magnify, R.layout.custom_space_item_view));
spaceNavigationView.shouldShowFullBadgeText(true);
spaceNavigationView.setCentreButtonIconColorFilterEnabled(false);
diff --git a/Sample/src/main/res/layout/custom_space_item_view.xml b/Sample/src/main/res/layout/custom_space_item_view.xml
new file mode 100644
index 0000000..984025f
--- /dev/null
+++ b/Sample/src/main/res/layout/custom_space_item_view.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spacelib/src/main/java/com/luseen/spacenavigation/SpaceItem.java b/spacelib/src/main/java/com/luseen/spacenavigation/SpaceItem.java
index 772a88e..82ee565 100644
--- a/spacelib/src/main/java/com/luseen/spacenavigation/SpaceItem.java
+++ b/spacelib/src/main/java/com/luseen/spacenavigation/SpaceItem.java
@@ -24,11 +24,19 @@ public class SpaceItem implements Serializable {
private int itemIcon;
+ private Integer itemLayout = null;
+
public SpaceItem(String itemName, int itemIcon) {
this.itemName = itemName;
this.itemIcon = itemIcon;
}
+ public SpaceItem(String itemName, int itemIcon, int itemLayout) {
+ this.itemName = itemName;
+ this.itemIcon = itemIcon;
+ this.itemLayout = itemLayout;
+ }
+
String getItemName() {
return itemName;
}
@@ -44,4 +52,12 @@ int getItemIcon() {
void setItemIcon(int itemIcon) {
this.itemIcon = itemIcon;
}
+
+ Integer getItemLayout() {
+ return itemLayout;
+ }
+
+ void setItemLayout(int itemLayout) {
+ this.itemLayout = itemLayout;
+ }
}
diff --git a/spacelib/src/main/java/com/luseen/spacenavigation/SpaceNavigationView.java b/spacelib/src/main/java/com/luseen/spacenavigation/SpaceNavigationView.java
index c1fafdf..6308982 100644
--- a/spacelib/src/main/java/com/luseen/spacenavigation/SpaceNavigationView.java
+++ b/spacelib/src/main/java/com/luseen/spacenavigation/SpaceNavigationView.java
@@ -113,6 +113,8 @@ public class SpaceNavigationView extends RelativeLayout {
private int contentWidth;
+ private int itemLayout = NOT_DEFINED;
+
private boolean isCentreButtonSelectable = false;
private boolean isCentrePartLinear = false;
@@ -163,6 +165,7 @@ private void init(AttributeSet attrs) {
activeSpaceItemColor = typedArray.getColor(com.luseen.spacenavigation.R.styleable.SpaceNavigationView_active_item_color, resources.getColor(com.luseen.spacenavigation.R.color.space_white));
inActiveSpaceItemColor = typedArray.getColor(com.luseen.spacenavigation.R.styleable.SpaceNavigationView_inactive_item_color, resources.getColor(com.luseen.spacenavigation.R.color.default_inactive_item_color));
centreButtonIcon = typedArray.getResourceId(R.styleable.SpaceNavigationView_centre_button_icon, R.drawable.near_me);
+ itemLayout = typedArray.getResourceId(R.styleable.SpaceNavigationView_space_item_layout, R.layout.space_item_view);
isCentrePartLinear = typedArray.getBoolean(R.styleable.SpaceNavigationView_centre_part_linear, false);
activeCentreButtonIconColor = typedArray.getColor(R.styleable.SpaceNavigationView_active_centre_button_icon_color, resources.getColor(R.color.space_white));
inActiveCentreButtonIconColor = typedArray.getColor(R.styleable.SpaceNavigationView_inactive_centre_button_icon_color, resources.getColor(com.luseen.spacenavigation.R.color.default_inactive_item_color));
@@ -188,6 +191,9 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (centreButtonIcon == NOT_DEFINED)
centreButtonIcon = R.drawable.near_me;
+ if (itemLayout == NOT_DEFINED)
+ itemLayout = R.layout.space_item_view;
+
if (activeSpaceItemColor == NOT_DEFINED)
activeSpaceItemColor = ContextCompat.getColor(context, com.luseen.spacenavigation.R.color.space_white);
@@ -429,9 +435,12 @@ private void addSpaceItems(LinearLayout leftContent, LinearLayout rightContent)
targetWidth = contentWidth;
}
+ Integer itemLayout = spaceItems.get(i).getItemLayout();
+ if (itemLayout == null) itemLayout = this.itemLayout;
+
RelativeLayout.LayoutParams textAndIconContainerParams = new RelativeLayout.LayoutParams(
targetWidth, mainContentHeight);
- RelativeLayout textAndIconContainer = (RelativeLayout) inflater.inflate(R.layout.space_item_view, this, false);
+ RelativeLayout textAndIconContainer = (RelativeLayout) inflater.inflate(itemLayout, this, false);
textAndIconContainer.setLayoutParams(textAndIconContainerParams);
ImageView spaceItemIcon = (ImageView) textAndIconContainer.findViewById(R.id.space_icon);
@@ -768,6 +777,15 @@ public void setCentreButtonIcon(int centreButtonIcon) {
this.centreButtonIcon = centreButtonIcon;
}
+ /**
+ * Set space item layout
+ *
+ * @param itemLayout target layout
+ */
+ public void setItemLayout(int itemLayout) {
+ this.itemLayout = itemLayout;
+ }
+
/**
* Set active centre button color
*
diff --git a/spacelib/src/main/res/values/attrs.xml b/spacelib/src/main/res/values/attrs.xml
index 878290f..a8ccf1d 100644
--- a/spacelib/src/main/res/values/attrs.xml
+++ b/spacelib/src/main/res/values/attrs.xml
@@ -10,6 +10,7 @@
+