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 @@ +