Permalink
...
Comparing changes
Open a pull request
- 6 commits
- 10 files changed
- 0 commit comments
- 1 contributor
Unified
Split
Showing
with
311 additions
and 11 deletions.
- +4 −0 app/app.iml
- +1 −0 app/build.gradle
- +3 −1 bottom-bar/bottom-bar.iml
- +2 −1 bottom-bar/build.gradle
- +76 −7 bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java
- +68 −0 bottom-bar/src/main/java/com/roughike/bottombar/scrollsweetness/BottomNavigationBehavior.java
- +148 −0 bottom-bar/src/main/java/com/roughike/bottombar/scrollsweetness/VerticalScrollingBehavior.java
- +1 −2 bottom-bar/src/main/res/layout/bb_bottom_bar_item_container.xml
- +4 −0 bottom-bar/src/main/res/values-sw600dp/bools.xml
- +4 −0 bottom-bar/src/main/res/values/bools.xml
View
4
app/app.iml
@@ -70,6 +70,8 @@ | ||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> | ||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.2.0/jars" /> | ||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.2.0/jars" /> | ||
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.2.0/jars" /> | ||
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.2.0/jars" /> | ||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.0/jars" /> | ||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.2.0/jars" /> | ||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> | ||
@@ -87,8 +89,10 @@ | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
<orderEntry type="library" exported="" name="animated-vector-drawable-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="support-v4-23.2.0" level="project" /> | ||
+ <orderEntry type="library" exported="" name="recyclerview-v7-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="support-annotations-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="support-vector-drawable-23.2.0" level="project" /> | ||
+ <orderEntry type="library" exported="" name="design-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="appcompat-v7-23.2.0" level="project" /> | ||
<orderEntry type="module" module-name="bottom-bar" exported="" /> | ||
</component> | ||
View
1
app/build.gradle
@@ -24,4 +24,5 @@ dependencies { | ||
testCompile 'junit:junit:4.12' | ||
compile project(':bottom-bar') | ||
compile 'com.android.support:appcompat-v7:23.2.0' | ||
+ compile 'com.android.support:design:23.2.0' | ||
} |
View
4
bottom-bar/bottom-bar.iml
@@ -1,5 +1,5 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
-<module external.linked.project.id=":bottom-bar" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="com.roughike" external.system.module.version="1.1.3" type="JAVA_MODULE" version="4"> | ||
+<module external.linked.project.id=":bottom-bar" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="com.roughike" external.system.module.version="1.1.4" type="JAVA_MODULE" version="4"> | ||
<component name="FacetManager"> | ||
<facet type="android-gradle" name="Android-Gradle"> | ||
<configuration> | ||
@@ -88,8 +88,10 @@ | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
<orderEntry type="library" exported="" name="animated-vector-drawable-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="support-v4-23.2.0" level="project" /> | ||
+ <orderEntry type="library" exported="" name="recyclerview-v7-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="support-annotations-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="support-vector-drawable-23.2.0" level="project" /> | ||
+ <orderEntry type="library" exported="" name="design-23.2.0" level="project" /> | ||
<orderEntry type="library" exported="" name="appcompat-v7-23.2.0" level="project" /> | ||
</component> | ||
</module> |
View
3
bottom-bar/build.gradle
@@ -13,7 +13,7 @@ ext { | ||
siteUrl = 'https://github.com/roughike/BottomBar' | ||
gitUrl = 'https://github.com/roughike/BottomBar.git' | ||
- libraryVersion = '1.1.3' | ||
+ libraryVersion = '1.1.4' | ||
developerId = 'roughike' | ||
developerName = 'Iiro Krankka' | ||
@@ -41,6 +41,7 @@ dependencies { | ||
compile fileTree(dir: 'libs', include: ['*.jar']) | ||
testCompile 'junit:junit:4.12' | ||
compile 'com.android.support:appcompat-v7:23.2.0' | ||
+ compile 'com.android.support:design:23.2.0' | ||
} | ||
apply plugin: 'com.github.dcendents.android-maven' | ||
View
83
bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java
@@ -12,7 +12,9 @@ | ||
import android.support.annotation.IdRes; | ||
import android.support.annotation.MenuRes; | ||
import android.support.annotation.StyleRes; | ||
+import android.support.design.widget.CoordinatorLayout; | ||
import android.support.v4.content.ContextCompat; | ||
+import android.support.v4.view.ViewCompat; | ||
import android.util.AttributeSet; | ||
import android.util.DisplayMetrics; | ||
import android.util.Log; | ||
@@ -26,9 +28,12 @@ | ||
import android.widget.FrameLayout; | ||
import android.widget.ImageView; | ||
import android.widget.LinearLayout; | ||
+import android.widget.RelativeLayout; | ||
import android.widget.TextView; | ||
import android.widget.Toast; | ||
+import com.roughike.bottombar.scrollsweetness.BottomNavigationBehavior; | ||
+ | ||
import java.util.HashMap; | ||
/* | ||
@@ -57,6 +62,8 @@ | ||
private Context mContext; | ||
private boolean mIsTabletMode; | ||
+ private boolean mIsShy; | ||
+ private boolean mUseExtraOffset; | ||
private ViewGroup mUserContentContainer; | ||
private View mOuterContainer; | ||
@@ -169,6 +176,44 @@ public static BottomBar attach(View view, Bundle savedInstanceState) { | ||
} | ||
/** | ||
+ * Adds the BottomBar inside of your CoordinatorLayout and shows / hides | ||
+ * it according to scroll state changes. | ||
+ * <p/> | ||
+ * Remember to also call {@link #onRestoreInstanceState(Bundle)} inside | ||
+ * of your {@link Activity#onSaveInstanceState(Bundle)} to restore the state. | ||
+ * | ||
+ * @param coordinatorLayout a CoordinatorLayout for the BottomBar to add itself into | ||
+ * @param savedInstanceState a Bundle for restoring the state on configuration change. | ||
+ * @return a BottomBar at the bottom of the screen. | ||
+ */ | ||
+ public static BottomBar attachShy(CoordinatorLayout coordinatorLayout, Bundle savedInstanceState) { | ||
+ final BottomBar bottomBar = new BottomBar(coordinatorLayout.getContext()); | ||
+ bottomBar.toughChildHood(ViewCompat.getFitsSystemWindows(coordinatorLayout)); | ||
+ bottomBar.onRestoreInstanceState(savedInstanceState); | ||
+ | ||
+ if (!coordinatorLayout.getContext().getResources().getBoolean(R.bool.bb_bottom_bar_is_tablet_mode)) { | ||
+ bottomBar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { | ||
+ @SuppressWarnings("deprecation") | ||
+ @Override | ||
+ public void onGlobalLayout() { | ||
+ ((CoordinatorLayout.LayoutParams) bottomBar.getLayoutParams()) | ||
+ .setBehavior(new BottomNavigationBehavior(bottomBar.getOuterContainer().getHeight(), 0)); | ||
+ ViewTreeObserver obs = bottomBar.getViewTreeObserver(); | ||
+ | ||
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | ||
+ obs.removeOnGlobalLayoutListener(this); | ||
+ } else { | ||
+ obs.removeGlobalOnLayoutListener(this); | ||
+ } | ||
+ } | ||
+ }); | ||
+ } | ||
+ | ||
+ coordinatorLayout.addView(bottomBar); | ||
+ return bottomBar; | ||
+ } | ||
+ | ||
+ /** | ||
* Set tabs and fragments for this BottomBar. When setting more than 3 items, | ||
* only the icons will show by default, but the selected item | ||
* will have the text visible. | ||
@@ -534,23 +579,39 @@ private void init(Context context, AttributeSet attrs, int defStyleAttr, int def | ||
private void initializeViews() { | ||
- View rootView = View.inflate(mContext, | ||
- R.layout.bb_bottom_bar_item_container, null); | ||
+ View rootView = View.inflate(mContext, R.layout.bb_bottom_bar_item_container, null); | ||
mTabletRightBorder = rootView.findViewById(R.id.bb_tablet_right_border); | ||
mIsTabletMode = mTabletRightBorder != null; | ||
+ | ||
mUserContentContainer = (ViewGroup) rootView.findViewById(R.id.bb_user_content_container); | ||
+ mShadowView = rootView.findViewById(R.id.bb_bottom_bar_shadow); | ||
+ | ||
mOuterContainer = rootView.findViewById(R.id.bb_bottom_bar_outer_container); | ||
mItemContainer = (ViewGroup) rootView.findViewById(R.id.bb_bottom_bar_item_container); | ||
mBackgroundView = rootView.findViewById(R.id.bb_bottom_bar_background_view); | ||
mBackgroundOverlay = rootView.findViewById(R.id.bb_bottom_bar_background_overlay); | ||
- mShadowView = rootView.findViewById(R.id.bb_bottom_bar_shadow); | ||
- | ||
addView(rootView); | ||
} | ||
+ /** | ||
+ * Makes this BottomBar "shy". In other words, it hides on scroll. | ||
+ */ | ||
+ private void toughChildHood(boolean useExtraOffset) { | ||
+ mIsShy = true; | ||
+ mUseExtraOffset = useExtraOffset; | ||
+ } | ||
+ | ||
+ protected boolean isShy() { | ||
+ return mIsShy; | ||
+ } | ||
+ | ||
+ protected boolean useExtraOffset() { | ||
+ return mUseExtraOffset; | ||
+ } | ||
+ | ||
protected ViewGroup getUserContainer() { | ||
return mUserContentContainer; | ||
} | ||
@@ -926,7 +987,7 @@ private void clearItems() { | ||
} | ||
} | ||
- private static void navBarMagic(Activity activity, BottomBar bottomBar) { | ||
+ private static void navBarMagic(Activity activity, final BottomBar bottomBar) { | ||
Resources res = activity.getResources(); | ||
int softMenuIdentifier = res | ||
.getIdentifier("config_showNavigationBar", "bool", "android"); | ||
@@ -1009,8 +1070,16 @@ private static void navBarMagic(Activity activity, BottomBar bottomBar) { | ||
@SuppressWarnings("deprecation") | ||
@Override | ||
public void onGlobalLayout() { | ||
- outerContainer.getLayoutParams().height = | ||
- outerContainer.getHeight() + navBarHeightCopy; | ||
+ int newHeight = outerContainer.getHeight() + navBarHeightCopy; | ||
+ outerContainer.getLayoutParams().height = newHeight; | ||
+ | ||
+ if (bottomBar.isShy()) { | ||
+ int defaultOffset = bottomBar.useExtraOffset()? navBarHeightCopy : 0; | ||
+ bottomBar.setTranslationY(defaultOffset); | ||
+ ((CoordinatorLayout.LayoutParams) bottomBar.getLayoutParams()) | ||
+ .setBehavior(new BottomNavigationBehavior(newHeight, defaultOffset)); | ||
+ } | ||
+ | ||
ViewTreeObserver obs = outerContainer.getViewTreeObserver(); | ||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | ||
View
68
...om-bar/src/main/java/com/roughike/bottombar/scrollsweetness/BottomNavigationBehavior.java
@@ -0,0 +1,68 @@ | ||
+package com.roughike.bottombar.scrollsweetness; | ||
+ | ||
+import android.support.design.widget.CoordinatorLayout; | ||
+import android.support.v4.view.ViewCompat; | ||
+import android.support.v4.view.ViewPropertyAnimatorCompat; | ||
+import android.support.v4.view.animation.LinearOutSlowInInterpolator; | ||
+import android.view.View; | ||
+import android.view.animation.Interpolator; | ||
+ | ||
+/** | ||
+ * Created by Nikola D. on 3/15/2016. | ||
+ * | ||
+ * Credit goes to Nikola Despotoski: | ||
+ * https://github.com/NikolaDespotoski | ||
+ */ | ||
+public class BottomNavigationBehavior<V extends View> extends VerticalScrollingBehavior<V> { | ||
+ private static final Interpolator INTERPOLATOR = new LinearOutSlowInInterpolator(); | ||
+ private final int mBottomNavHeight; | ||
+ private final int mDefaultOffset; | ||
+ | ||
+ private ViewPropertyAnimatorCompat mTranslationAnimator; | ||
+ private boolean hidden = false; | ||
+ | ||
+ public BottomNavigationBehavior(int bottomNavHeight, int defaultOffset) { | ||
+ mBottomNavHeight = bottomNavHeight; | ||
+ mDefaultOffset = defaultOffset; | ||
+ } | ||
+ | ||
+ @Override | ||
+ public void onNestedVerticalOverScroll(CoordinatorLayout coordinatorLayout, V child, @ScrollDirection int direction, int currentOverScroll, int totalOverScroll) { | ||
+ } | ||
+ | ||
+ @Override | ||
+ public void onDirectionNestedPreScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dx, int dy, int[] consumed, @ScrollDirection int scrollDirection) { | ||
+ handleDirection(child, scrollDirection); | ||
+ } | ||
+ | ||
+ private void handleDirection(V child, int scrollDirection) { | ||
+ if (scrollDirection == ScrollDirection.SCROLL_DIRECTION_DOWN && hidden) { | ||
+ hidden = false; | ||
+ animateOffset(child, mDefaultOffset); | ||
+ } else if (scrollDirection == ScrollDirection.SCROLL_DIRECTION_UP && !hidden) { | ||
+ hidden = true; | ||
+ animateOffset(child, mBottomNavHeight + mDefaultOffset); | ||
+ } | ||
+ } | ||
+ | ||
+ @Override | ||
+ protected boolean onNestedDirectionFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, @ScrollDirection int scrollDirection) { | ||
+ handleDirection(child, scrollDirection); | ||
+ return true; | ||
+ } | ||
+ | ||
+ private void animateOffset(final V child, final int offset) { | ||
+ ensureOrCancelAnimator(child); | ||
+ mTranslationAnimator.translationY(offset).start(); | ||
+ } | ||
+ | ||
+ private void ensureOrCancelAnimator(V child) { | ||
+ if (mTranslationAnimator == null) { | ||
+ mTranslationAnimator = ViewCompat.animate(child); | ||
+ mTranslationAnimator.setDuration(300); | ||
+ mTranslationAnimator.setInterpolator(INTERPOLATOR); | ||
+ } else { | ||
+ mTranslationAnimator.cancel(); | ||
+ } | ||
+ } | ||
+} |
View
148
...m-bar/src/main/java/com/roughike/bottombar/scrollsweetness/VerticalScrollingBehavior.java
@@ -0,0 +1,148 @@ | ||
+package com.roughike.bottombar.scrollsweetness; | ||
+ | ||
+import android.content.Context; | ||
+import android.os.Parcelable; | ||
+import android.support.annotation.IntDef; | ||
+import android.support.design.widget.CoordinatorLayout; | ||
+import android.support.v4.view.WindowInsetsCompat; | ||
+import android.util.AttributeSet; | ||
+import android.view.View; | ||
+ | ||
+import java.lang.annotation.Retention; | ||
+import java.lang.annotation.RetentionPolicy; | ||
+ | ||
+/** | ||
+ * Created by Nikola D. on 11/22/2015. | ||
+ * | ||
+ * Credit goes to Nikola Despotoski: | ||
+ * https://github.com/NikolaDespotoski | ||
+ */ | ||
+public abstract class VerticalScrollingBehavior<V extends View> extends CoordinatorLayout.Behavior<V> { | ||
+ | ||
+ private int mTotalDyUnconsumed = 0; | ||
+ private int mTotalDy = 0; | ||
+ @ScrollDirection | ||
+ private int mOverScrollDirection = ScrollDirection.SCROLL_NONE; | ||
+ @ScrollDirection | ||
+ private int mScrollDirection = ScrollDirection.SCROLL_NONE; | ||
+ | ||
+ public VerticalScrollingBehavior(Context context, AttributeSet attrs) { | ||
+ super(context, attrs); | ||
+ } | ||
+ | ||
+ public VerticalScrollingBehavior() { | ||
+ super(); | ||
+ } | ||
+ | ||
+ @Retention(RetentionPolicy.SOURCE) | ||
+ @IntDef({ScrollDirection.SCROLL_DIRECTION_UP, ScrollDirection.SCROLL_DIRECTION_DOWN}) | ||
+ public @interface ScrollDirection { | ||
+ int SCROLL_DIRECTION_UP = 1; | ||
+ int SCROLL_DIRECTION_DOWN = -1; | ||
+ int SCROLL_NONE = 0; | ||
+ } | ||
+ | ||
+ | ||
+ /* | ||
+ @return Overscroll direction: SCROLL_DIRECTION_UP, CROLL_DIRECTION_DOWN, SCROLL_NONE | ||
+ */ | ||
+ @ScrollDirection | ||
+ public int getOverScrollDirection() { | ||
+ return mOverScrollDirection; | ||
+ } | ||
+ | ||
+ | ||
+ /** | ||
+ * @return Scroll direction: SCROLL_DIRECTION_UP, SCROLL_DIRECTION_DOWN, SCROLL_NONE | ||
+ */ | ||
+ | ||
+ @ScrollDirection | ||
+ public int getScrollDirection() { | ||
+ return mScrollDirection; | ||
+ } | ||
+ | ||
+ | ||
+ /** | ||
+ * @param coordinatorLayout | ||
+ * @param child | ||
+ * @param direction Direction of the overscroll: SCROLL_DIRECTION_UP, SCROLL_DIRECTION_DOWN | ||
+ * @param currentOverScroll Unconsumed value, negative or positive based on the direction; | ||
+ * @param totalOverScroll Cumulative value for current direction | ||
+ */ | ||
+ public abstract void onNestedVerticalOverScroll(CoordinatorLayout coordinatorLayout, V child, @ScrollDirection int direction, int currentOverScroll, int totalOverScroll); | ||
+ | ||
+ /** | ||
+ * @param scrollDirection Direction of the overscroll: SCROLL_DIRECTION_UP, SCROLL_DIRECTION_DOWN | ||
+ */ | ||
+ public abstract void onDirectionNestedPreScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dx, int dy, int[] consumed, @ScrollDirection int scrollDirection); | ||
+ | ||
+ @Override | ||
+ public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes) { | ||
+ return (nestedScrollAxes & View.SCROLL_AXIS_VERTICAL) != 0; | ||
+ } | ||
+ | ||
+ @Override | ||
+ public void onNestedScrollAccepted(CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes) { | ||
+ super.onNestedScrollAccepted(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, V child, View target) { | ||
+ super.onStopNestedScroll(coordinatorLayout, child, target); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public void onNestedScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { | ||
+ super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); | ||
+ if (dyUnconsumed > 0 && mTotalDyUnconsumed < 0) { | ||
+ mTotalDyUnconsumed = 0; | ||
+ mOverScrollDirection = ScrollDirection.SCROLL_DIRECTION_UP; | ||
+ } else if (dyUnconsumed < 0 && mTotalDyUnconsumed > 0) { | ||
+ mTotalDyUnconsumed = 0; | ||
+ mOverScrollDirection = ScrollDirection.SCROLL_DIRECTION_DOWN; | ||
+ } | ||
+ mTotalDyUnconsumed += dyUnconsumed; | ||
+ onNestedVerticalOverScroll(coordinatorLayout, child, mOverScrollDirection, dyConsumed, mTotalDyUnconsumed); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dx, int dy, int[] consumed) { | ||
+ super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed); | ||
+ if (dy > 0 && mTotalDy < 0) { | ||
+ mTotalDy = 0; | ||
+ mScrollDirection = ScrollDirection.SCROLL_DIRECTION_UP; | ||
+ } else if (dy < 0 && mTotalDy > 0) { | ||
+ mTotalDy = 0; | ||
+ mScrollDirection = ScrollDirection.SCROLL_DIRECTION_DOWN; | ||
+ } | ||
+ mTotalDy += dy; | ||
+ onDirectionNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, mScrollDirection); | ||
+ } | ||
+ | ||
+ | ||
+ @Override | ||
+ public boolean onNestedFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, boolean consumed) { | ||
+ super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed); | ||
+ mScrollDirection = velocityY > 0 ? ScrollDirection.SCROLL_DIRECTION_UP : ScrollDirection.SCROLL_DIRECTION_DOWN; | ||
+ return onNestedDirectionFling(coordinatorLayout, child, target, velocityX, velocityY, mScrollDirection); | ||
+ } | ||
+ | ||
+ protected abstract boolean onNestedDirectionFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, @ScrollDirection int scrollDirection); | ||
+ | ||
+ @Override | ||
+ public boolean onNestedPreFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY) { | ||
+ return super.onNestedPreFling(coordinatorLayout, child, target, velocityX, velocityY); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public WindowInsetsCompat onApplyWindowInsets(CoordinatorLayout coordinatorLayout, V child, WindowInsetsCompat insets) { | ||
+ | ||
+ return super.onApplyWindowInsets(coordinatorLayout, child, insets); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public Parcelable onSaveInstanceState(CoordinatorLayout parent, V child) { | ||
+ return super.onSaveInstanceState(parent, child); | ||
+ } | ||
+ | ||
+} |
View
3
bottom-bar/src/main/res/layout/bb_bottom_bar_item_container.xml
@@ -7,8 +7,7 @@ | ||
<FrameLayout | ||
android:id="@+id/bb_user_content_container" | ||
android:layout_width="match_parent" | ||
- android:layout_height="match_parent" | ||
- android:layout_above="@+id/bb_bottom_bar_outer_container"> | ||
+ android:layout_height="match_parent"> | ||
<ImageView | ||
android:id="@+id/bb_bottom_bar_shadow" | ||
View
4
bottom-bar/src/main/res/values-sw600dp/bools.xml
@@ -0,0 +1,4 @@ | ||
+<?xml version="1.0" encoding="utf-8"?> | ||
+<resources> | ||
+ <bool name="bb_bottom_bar_is_tablet_mode">true</bool> | ||
+</resources> |
View
4
bottom-bar/src/main/res/values/bools.xml
@@ -0,0 +1,4 @@ | ||
+<?xml version="1.0" encoding="utf-8"?> | ||
+<resources> | ||
+ <bool name="bb_bottom_bar_is_tablet_mode">false</bool> | ||
+</resources> |