Skip to content
This repository was archived by the owner on Jan 17, 2023. It is now read-only.

Commit f40e51b

Browse files
committed
Added support for API 19, Added New style
1 parent e0ba7dc commit f40e51b

11 files changed

Lines changed: 72 additions & 27 deletions

File tree

‎MaterialNavigationView/build.gradle‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ apply plugin: 'kotlin-android-extensions'
44
apply plugin: 'com.github.dcendents.android-maven'
55
apply plugin: "com.jfrog.bintray"
66

7-
version = "1.0"
7+
version = "1.1"
88
android {
99
compileSdkVersion 29
1010
buildToolsVersion "29.0.0"
1111

1212

1313
defaultConfig {
14-
minSdkVersion 21
14+
minSdkVersion 19
1515
targetSdkVersion 29
1616
versionCode 1
1717
versionName version
@@ -32,8 +32,8 @@ android {
3232
dependencies {
3333
implementation fileTree(dir: 'libs', include: ['*.jar'])
3434
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
35-
implementation 'androidx.appcompat:appcompat:1.0.2'
36-
implementation 'androidx.core:core-ktx:1.0.2'
35+
implementation 'androidx.appcompat:appcompat:1.1.0'
36+
implementation 'androidx.core:core-ktx:1.1.0'
3737
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
3838
implementation 'com.google.android.material:material:1.0.0'
3939
testImplementation 'junit:junit:4.12'

‎MaterialNavigationView/src/main/java/com/shreyaspatil/material/navigationview/MaterialNavigationView.kt‎

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.shreyaspatil.material.navigationview
22

33
import android.content.Context
44
import android.graphics.drawable.Drawable
5+
import android.os.Build
56
import android.util.AttributeSet
67
import android.util.Log
78
import androidx.appcompat.content.res.AppCompatResources
@@ -19,7 +20,7 @@ class MaterialNavigationView @JvmOverloads constructor(
1920
defStyleAttr: Int = R.style.Widget_NavigationView
2021
) : NavigationView(context, attrs, defStyleAttr) {
2122

22-
private var itemStyle: Int = ITEM_STYLE_ROUND_RIGHT
23+
private var itemStyle: Int = ITEM_STYLE_DEFAULT
2324

2425
init {
2526
// Init itemStyle
@@ -31,7 +32,7 @@ class MaterialNavigationView @JvmOverloads constructor(
3132

3233
itemStyle = a.getInteger(
3334
R.styleable.MaterialNavigationView_itemStyle,
34-
ITEM_STYLE_ROUND_RECTANGLE
35+
ITEM_STYLE_DEFAULT
3536
)
3637

3738
// Recycler it.
@@ -48,7 +49,6 @@ class MaterialNavigationView @JvmOverloads constructor(
4849
* @see ITEM_STYLE_ROUND_RECTANGLE (2)
4950
*/
5051
fun getItemStyle(): Int {
51-
// Obtain Styled Attribute
5252
return itemStyle
5353
}
5454

@@ -59,7 +59,10 @@ class MaterialNavigationView @JvmOverloads constructor(
5959
* @see ITEM_STYLE_ROUND_RECTANGLE (2)
6060
*/
6161
fun setItemStyle(itemStyle: Int) {
62-
if (itemStyle == ITEM_STYLE_ROUND_RIGHT || itemStyle == ITEM_STYLE_ROUND_RECTANGLE) {
62+
if (itemStyle == ITEM_STYLE_ROUND_RIGHT ||
63+
itemStyle == ITEM_STYLE_ROUND_RECTANGLE ||
64+
itemStyle == ITEM_STYLE_DEFAULT
65+
) {
6366
this.itemStyle = itemStyle
6467
itemBackground = navigationItemBackground()
6568
} else {
@@ -70,25 +73,32 @@ class MaterialNavigationView @JvmOverloads constructor(
7073
private fun navigationItemBackground(): Drawable? {
7174
// Set Resource
7275
val resource = when (itemStyle) {
76+
ITEM_STYLE_DEFAULT -> R.drawable.navigation_item_background_default
7377
ITEM_STYLE_ROUND_RIGHT -> R.drawable.navigation_item_background_rounded_right
7478
else -> R.drawable.navigation_item_background_rounded_rect
7579
}
7680

77-
var background =
78-
AppCompatResources.getDrawable(context, resource)
81+
var background = AppCompatResources.getDrawable(context, resource)
7982
if (background != null) {
8083
val tint = AppCompatResources.getColorStateList(
8184
context, R.color.navigation_item_background_tint
8285
)
86+
8387
background = DrawableCompat.wrap(background.mutate())
84-
background.setTintList(tint)
88+
89+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
90+
background.setTintList(tint)
91+
} else {
92+
DrawableCompat.setTintList(background, tint)
93+
}
8594
}
8695

8796
return background
8897
}
8998

9099
companion object {
91-
const val ITEM_STYLE_ROUND_RIGHT = 1
92-
const val ITEM_STYLE_ROUND_RECTANGLE = 2
100+
const val ITEM_STYLE_DEFAULT = 1
101+
const val ITEM_STYLE_ROUND_RIGHT = 2
102+
const val ITEM_STYLE_ROUND_RECTANGLE = 3
93103
}
94104
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
4+
<item android:state_checked="true">
5+
<inset android:insetLeft="@dimen/nav_item_background_inset_default" android:insetTop="@dimen/nav_item_background_inset_default" android:insetRight="@dimen/nav_item_background_inset_right_default" android:insetBottom="@dimen/nav_item_background_inset_default">
6+
<shape>
7+
<corners android:bottomLeftRadius="@dimen/nav_item_background_radius_default" android:bottomRightRadius="@dimen/nav_item_background_radius_default" android:topLeftRadius="@dimen/nav_item_background_radius_default" android:topRightRadius="@dimen/nav_item_background_radius_default" />
8+
</shape>
9+
</inset>
10+
</item>
11+
<item>
12+
<color android:color="@android:color/transparent" />
13+
</item>
14+
</selector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
4+
<style name="Widget" parent="@android:style/Widget.Material" />
5+
</resources>

‎MaterialNavigationView/src/main/res/values/attrs.xml‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
<declare-styleable name="MaterialNavigationView">
66
<attr name="itemStyle" format="enum">
7-
<enum name="rounded_right" value="1"/>
8-
<enum name="rounded_rectangle" value="2"/>
7+
<enum name="default_style" value="1" />
8+
<enum name="rounded_right" value="2" />
9+
<enum name="rounded_rectangle" value="3" />
910
</attr>
1011
</declare-styleable>
1112

‎MaterialNavigationView/src/main/res/values/dimens.xml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,7 @@
2323
<dimen name="nav_item_background_inset_top_sq">4dp</dimen>
2424
<dimen name="nav_item_background_inset_bottom_sq">4dp</dimen>
2525

26+
<dimen name="nav_item_background_inset_default">0dp</dimen>
27+
<dimen name="nav_item_background_inset_right_default">4dp</dimen>
28+
<dimen name="nav_item_background_radius_default">1dp</dimen>
2629
</resources>

‎MaterialNavigationView/src/main/res/values/styles.xml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<resources>
22

3-
<style name="Widget" parent="@android:style/Widget.Material" />
3+
<style name="Widget" parent="@android:style/Widget" />
44

55
<style name="Widget.NavigationView" parent="@style/Widget.MaterialComponents.NavigationView">
6-
<item name="itemBackground">@drawable/navigation_item_background_rounded_right</item>
6+
<item name="itemBackground">@drawable/navigation_item_background_default</item>
77
<item name="itemHorizontalPadding">@dimen/nav_item_horizontal_padding</item>
88
</style>
99

‎app/build.gradle‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android {
99
buildToolsVersion "29.0.0"
1010
defaultConfig {
1111
applicationId "com.shreyaspatil.MaterialNavigationDrawer.example"
12-
minSdkVersion 21
12+
minSdkVersion 19
1313
targetSdkVersion 29
1414
versionCode 1
1515
versionName "1.0"
@@ -26,8 +26,8 @@ android {
2626
dependencies {
2727
implementation fileTree(dir: 'libs', include: ['*.jar'])
2828
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
29-
implementation 'androidx.appcompat:appcompat:1.0.2'
30-
implementation 'androidx.core:core-ktx:1.0.2'
29+
implementation 'androidx.appcompat:appcompat:1.1.0'
30+
implementation 'androidx.core:core-ktx:1.1.0'
3131
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
3232
implementation 'com.google.android.material:material:1.0.0'
3333
implementation 'androidx.drawerlayout:drawerlayout:1.0.0'
@@ -39,7 +39,7 @@ dependencies {
3939
implementation 'androidx.navigation:navigation-ui-ktx:2.0.0'
4040

4141
// Material Navigation View Library
42-
implementation 'com.shreyaspatil:MaterialNavigationView:1.0'
42+
implementation 'com.shreyaspatil:MaterialNavigationView:1.1'
4343

4444
testImplementation 'junit:junit:4.12'
4545
androidTestImplementation 'androidx.test:runner:1.2.0'

‎app/src/main/java/com/shreyaspatil/MaterialNavigationDrawer/example/MainActivity.kt‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,17 @@ class MainActivity : AppCompatActivity() {
5050
}
5151

5252
override fun onOptionsItemSelected(item: MenuItem): Boolean {
53-
val itemStyle = when (item.itemId) {
54-
R.id.action_round_rect -> MaterialNavigationView.ITEM_STYLE_ROUND_RECTANGLE
55-
R.id.action_round_right -> MaterialNavigationView.ITEM_STYLE_ROUND_RIGHT
56-
else -> MaterialNavigationView.ITEM_STYLE_ROUND_RIGHT
53+
when (item.itemId) {
54+
R.id.action_default -> {
55+
navView.setItemStyle(MaterialNavigationView.ITEM_STYLE_DEFAULT)
56+
}
57+
R.id.action_round_rect -> {
58+
navView.setItemStyle(MaterialNavigationView.ITEM_STYLE_ROUND_RECTANGLE)
59+
}
60+
R.id.action_round_right -> {
61+
navView.setItemStyle(MaterialNavigationView.ITEM_STYLE_ROUND_RIGHT)
62+
}
5763
}
58-
navView.setItemStyle(itemStyle)
5964
return false
6065
}
6166

‎app/src/main/res/layout/activity_main.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
app:headerLayout="@layout/nav_header_main"
2222
app:insetForeground="@android:color/transparent"
2323
app:itemIconTint="@color/navigation_item_tint"
24-
app:itemStyle="rounded_right"
24+
app:itemStyle="default_style"
2525
app:itemTextColor="@color/navigation_item_tint"
2626
app:menu="@menu/activity_main_drawer" />
2727

0 commit comments

Comments
 (0)