Skip to content

Commit 5a3eb27

Browse files
committed
Add setIconMarginTop. Remove setIconCenter.
1 parent 3cf18a9 commit 5a3eb27

File tree

8 files changed

+72
-24
lines changed

8 files changed

+72
-24
lines changed

README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ An android lib for enhancing BottomNavigationView.
2727
|getMenuItemPosition|Get menu item position in menu. Return position if success, -1 otherwise.
2828
|getOnNavigationItemSelectedListener|Get OnNavigationItemSelectedListener.
2929
|setCurrentItem|Set the current checked item.
30+
|setIconMarginTop|set margin top for icon.
3031
|setIconSize|Set all item ImageView size.
3132
|setIconSizeAt|Set all item ImageView size which at position.
33+
|setIconsMarginTop|set margin top for all icons.
3234
|setIconTintList| Set the icon tint list.
3335
|setIconVisibility|Change the visibility of icon.
3436
|setItemBackground| Set background of item.
@@ -73,6 +75,7 @@ An android lib for enhancing BottomNavigationView.
7375

7476
![](/read_me_images/no_animation_shifting_mode_item_shifting_mode_icon.gif)
7577

78+
**Attention: Something wrong on Android 4.x**
7679
![](/read_me_images/with_padding.jpg)
7780

7881
![](/read_me_images/center_icon_only.jpg)
@@ -85,6 +88,9 @@ An android lib for enhancing BottomNavigationView.
8588

8689
![](/read_me_images/icon_selector_1.jpg) ![](/read_me_images/icon_selector_2.jpg)
8790

91+
![](/read_me_images/icon_margin_top.jpg)
92+
93+
8894
**With ViewPager**
8995

9096
![](/read_me_images/with_view_pager.gif)
@@ -114,12 +120,12 @@ allprojects {
114120

115121
Step 2. Add the dependency
116122
```groovy
117-
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.8'
123+
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.9'
118124
```
119125

120126
#### Manual: ####
121127

122-
Downloading [BottomNavigationViewEx.java](https://raw.githubusercontent.com/ittianyu/BottomNavigationViewEx/master/widget/src/main/java/com/ittianyu/bottomnavigationviewex/BottomNavigationViewEx.java) and copying it to you project
128+
Downloading [BottomNavigationViewEx.java](https://raw.githubusercontent.com/ittianyu/BottomNavigationViewEx/master/widget/src/main/java/com/ittianyu/bottomnavigationviewex/BottomNavigationViewEx.java) and copying it to you project.
123129

124130

125131
## Getting started ##
@@ -254,8 +260,10 @@ Thanks for [Adrián Mouly](https://github.com/amouly) | [liaolintao](https://git
254260
|getMenuItemPosition|获取子菜单的索引。如果找不到,返回 -1。
255261
|getOnNavigationItemSelectedListener|获取 OnNavigationItemSelectedListener。
256262
|setCurrentItem|设置当前选中项。
263+
|setIconMarginTop|设置 icon 的 MarginTop,用于调节图标垂直位置。
257264
|setIconSize|设置所有的子项图标大小。
258265
|setIconSizeAt|设置位于 position 的图标的大小。
266+
|setIconsMarginTop|设置所有 icon 的 MarginTop,用于调节图标垂直位置。
259267
|setIconTintList| 设置图片的渲染颜色列表(Selector)
260268
|setIconVisibility|设置图片可见性。
261269
|setItemBackground| 设置子项的背景。
@@ -300,6 +308,7 @@ Thanks for [Adrián Mouly](https://github.com/amouly) | [liaolintao](https://git
300308

301309
![](/read_me_images/no_animation_shifting_mode_item_shifting_mode_icon.gif)
302310

311+
**注意:这个 style 在安卓 4.x 上有 bug**
303312
![](/read_me_images/with_padding.jpg)
304313

305314
![](/read_me_images/center_icon_only.jpg)
@@ -312,6 +321,8 @@ Thanks for [Adrián Mouly](https://github.com/amouly) | [liaolintao](https://git
312321

313322
![](/read_me_images/icon_selector_1.jpg) ![](/read_me_images/icon_selector_2.jpg)
314323

324+
![](/read_me_images/icon_margin_top.jpg)
325+
315326
**和 ViewPager 一起使用**
316327

317328
![](/read_me_images/with_view_pager.gif)
@@ -341,7 +352,7 @@ allprojects {
341352

342353
步骤 2. 添加依赖
343354
```groovy
344-
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.8'
355+
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.9'
345356
```
346357

347358
#### 手动导入: ####

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "com.ittianyu.bottomnavigationviewexsample"
99
minSdkVersion 9
1010
targetSdkVersion rootProject.ext.targetSdkVersion
11-
versionCode 12
12-
versionName "1.1.8"
11+
versionCode 13
12+
versionName "1.1.9"
1313
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1414
}
1515
buildTypes {

app/src/main/java/com/ittianyu/bottomnavigationviewexsample/features/style/StyleActivity.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,11 @@ private void init() {
8181
initCustomTypeface();
8282

8383
bind.bnveIconSelector.enableAnimation(false);
84+
85+
initMargin();
8486
}
8587

88+
8689
private void initCenterIconOnly() {
8790
bind.bnveCenterIconOnly.enableAnimation(false);
8891
bind.bnveCenterIconOnly.enableShiftingMode(false);
@@ -94,7 +97,7 @@ private void initCenterIconOnly() {
9497
bind.bnveCenterIconOnly.setItemBackground(centerPosition, R.color.colorGreen);
9598
bind.bnveCenterIconOnly.setIconTintList(centerPosition,
9699
getResources().getColorStateList(R.color.selector_item_gray_color));
97-
bind.bnveCenterIconOnly.setIconCenter(centerPosition);
100+
bind.bnveCenterIconOnly.setIconMarginTop(centerPosition, BottomNavigationViewEx.dp2px(this, 4));
98101
// you could set a listener for bnve. and return false when click the center item so that it won't be checked.
99102
bind.bnveCenterIconOnly.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
100103
@Override
@@ -140,4 +143,13 @@ private void initCustomTypeface() {
140143
// bind.bnveCustomTypeface.setTypeface(typeface);
141144
}
142145

146+
private void initMargin() {
147+
bind.bnveIconMarginTop.enableAnimation(false);
148+
bind.bnveIconMarginTop.enableShiftingMode(false);
149+
bind.bnveIconMarginTop.enableItemShiftingMode(false);
150+
bind.bnveIconMarginTop.setTextVisibility(false);
151+
bind.bnveIconMarginTop.setItemHeight(BottomNavigationViewEx.dp2px(this, 56));
152+
bind.bnveIconMarginTop.setIconsMarginTop(BottomNavigationViewEx.dp2px(this, 16));
153+
}
154+
143155
}

app/src/main/res/layout/activity_style.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,17 @@
236236
app:itemTextColor="@color/selector_item_primary_color"
237237
app:menu="@menu/menu_navigation_selector" />
238238

239+
<TextView
240+
style="@style/text_black"
241+
android:text="@string/icon_margin_top" />
242+
243+
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
244+
android:id="@+id/bnve_icon_margin_top"
245+
style="@style/bnve_white_bg"
246+
app:itemIconTint="@color/selector_item_primary_color"
247+
app:itemTextColor="@color/selector_item_primary_color"
248+
app:menu="@menu/menu_navigation" />
249+
239250
</LinearLayout>
240251

241252
</ScrollView>

app/src/main/res/values/strings.xml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
<resources>
22
<string name="app_name">BottomNavigationViewEx</string>
3+
34
<string name="music">Music</string>
45
<string name="backup">Backup</string>
56
<string name="friends">Friends</string>
67
<string name="favor">Favor</string>
8+
9+
<string name="lamp">Lamp</string>
10+
<string name="weather">Weather</string>
11+
<string name="face">Face</string>
12+
713
<string name="visibility">Visibility</string>
814
<string name="different_style">Different style</string>
915
<string name="with_view_pager">With ViewPager</string>
16+
1017
<string name="no_animation_shifting_mode_item_shifting_mode_icon" translatable="false">no animation/ shifting mode/ item shifting mode/ icon</string>
1118
<string name="no_item_shifting_mode_icon" translatable="false">no item shifting mode/ icon</string>
1219
<string name="no_shifting_mode_item_shifting_mode_icon" translatable="false">no shifting mode/ item shifting mode/ icon</string>
@@ -29,7 +36,6 @@
2936
<string name="bigger_icon" translatable="false">bigger icon (custom icon size)</string>
3037
<string name="custom_typeface" translatable="false">custom typeface</string>
3138
<string name="icon_selector" translatable="false">icon selector</string>
32-
<string name="lamp">Lamp</string>
33-
<string name="weather">Weather</string>
34-
<string name="face">Face</string>
39+
<string name="icon_margin_top" translatable="false">icon margin top</string>
40+
3541
</resources>

read_me_images/icon_margin_top.jpg

9.22 KB
Loading

widget/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
defaultConfig {
1111
minSdkVersion 9
1212
targetSdkVersion rootProject.ext.targetSdkVersion
13-
versionCode 12
14-
versionName "1.1.8"
13+
versionCode 13
14+
versionName "1.1.9"
1515

1616
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1717

widget/src/main/java/com/ittianyu/bottomnavigationviewex/BottomNavigationViewEx.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,10 @@
1313
import android.util.AttributeSet;
1414
import android.util.SparseIntArray;
1515
import android.util.TypedValue;
16-
import android.view.Gravity;
1716
import android.view.Menu;
1817
import android.view.MenuItem;
1918
import android.view.View;
2019
import android.view.ViewGroup;
21-
import android.widget.FrameLayout;
2220
import android.widget.ImageView;
2321
import android.widget.TextView;
2422

@@ -876,7 +874,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
876874
}
877875

878876
}
879-
877+
880878
public void enableShiftingMode(int position, boolean enable) {
881879
getBottomNavigationItemView(position).setShiftingMode(enable);
882880
}
@@ -890,18 +888,28 @@ public void setIconTintList(int position, ColorStateList tint) {
890888
}
891889

892890
/**
893-
* <p>
894-
* It will go back when it was checked {@code android.support.design.internal.BottomNavigationItemView#setChecked()}
895-
* So you need call {@link #enableShiftingMode(int, boolean)} to make it center again when item selected
896-
* </p>
897-
*
891+
* set margin top for all icons
892+
* @param marginTop in px
893+
*/
894+
public void setIconsMarginTop(int marginTop) {
895+
for (int i = 0; i < getItemCount(); i++) {
896+
setIconMarginTop(i, marginTop);
897+
}
898+
}
899+
900+
/**
901+
* set margin top for icon
898902
* @param position
903+
* @param marginTop in px
899904
*/
900-
public void setIconCenter(int position) {
901-
enableShiftingMode(position, true);
902-
ImageView iv = getIconAt(position);
903-
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) iv.getLayoutParams();
904-
lp.gravity = Gravity.CENTER;
905+
public void setIconMarginTop(int position, int marginTop) {
906+
/*
907+
1. BottomNavigationItemView
908+
2. private final int mDefaultMargin;
909+
*/
910+
BottomNavigationItemView itemView = getBottomNavigationItemView(position);
911+
setField(BottomNavigationItemView.class, itemView, "mDefaultMargin", marginTop);
912+
mMenuView.updateMenuView();
905913
}
906914

907915
}

0 commit comments

Comments
 (0)