diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 5b12fd356..dc31c7859 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,7 +2,7 @@ diff --git a/Habitica/res/layout/daily_item_card.xml b/Habitica/res/layout/daily_item_card.xml index 8e01c1065..c42810922 100644 --- a/Habitica/res/layout/daily_item_card.xml +++ b/Habitica/res/layout/daily_item_card.xml @@ -10,14 +10,14 @@ + android:layout_height="wrap_content"> + android:baselineAligned="false" + android:minHeight="@dimen/task_min_height"> + android:layout_height="wrap_content"> + android:orientation="horizontal" + android:minHeight="@dimen/task_min_height"> + android:layout_height="wrap_content"> + android:baselineAligned="false" + android:minHeight="@dimen/task_min_height"> = Build.VERSION_CODES.JELLY_BEAN_MR1) { @@ -66,4 +68,12 @@ public class NavbarUtils { return hasSoftwareKeys; } + + public static boolean isBehindNavbar(int[] parentLocation, Context context) { + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + Point size = new Point(); + display.getSize(size); + return parentLocation[1] > (size.y - getNavbarHeight(context)); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.java index fc868060f..23bf08974 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.java @@ -19,6 +19,7 @@ public class DailyViewHolder extends ChecklistedViewHolder { @Override public void bindHolder(Task newTask, int position) { + this.task = newTask; if (newTask.isChecklistDisplayActive()) { this.checklistIndicatorWrapper.setBackgroundResource(newTask.getLightTaskColor()); } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java index 8e4815208..00c7bd4b7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java @@ -40,6 +40,7 @@ public class HabitViewHolder extends BaseTaskViewHolder { @Override public void bindHolder(Task newTask, int position) { + this.task = newTask; if (newTask.up) { this.btnPlusWrapper.setBackgroundResource(newTask.getLightTaskColor()); if (newTask.getLightTaskColor() == R.color.yellow_100) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java index 039f9604a..e0e4a9d47 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java @@ -85,6 +85,7 @@ public class RewardViewHolder extends BaseTaskViewHolder { } public void bindHolder(Task reward, int position, boolean canBuy) { + this.task = reward; super.bindHolder(reward, position); this.priceLabel.setText(NumberAbbreviator.abbreviate(itemView.getContext(), this.task.value)); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.java index 4eb5d69f3..7ee02b84d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.java @@ -17,6 +17,7 @@ public class TodoViewHolder extends ChecklistedViewHolder { @Override public void bindHolder(Task newTask, int position) { + this.task = newTask; if (newTask.getCompleted()) { this.checklistIndicatorWrapper.setBackgroundColor(this.taskGray); } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.java index b60dc04d8..9baca3892 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.java @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica.ui.views; import android.content.Context; +import android.graphics.Rect; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.design.widget.BaseTransientBottomBar; @@ -15,6 +16,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.ui.helpers.NavbarUtils; import javax.annotation.Resource; @@ -34,6 +36,13 @@ public class HabiticaSnackbar extends BaseTransientBottomBar { private static HabiticaSnackbar make(@NonNull ViewGroup parent, int duration) { final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); final View content = inflater.inflate(R.layout.snackbar_view, parent, false); + if (NavbarUtils.hasSoftKeys(parent.getContext())) { + int[] parentLocation = new int[2]; + parent.getLocationInWindow(parentLocation); + if (NavbarUtils.isBehindNavbar(parentLocation, parent.getContext())) { + content.setPadding(0, 0, 0, NavbarUtils.getNavbarHeight(parent.getContext())); + } + } final ContentViewCallback viewCallback = new ContentViewCallback(content); final HabiticaSnackbar customSnackbar = new HabiticaSnackbar(parent, content, viewCallback); customSnackbar.setDuration(duration); @@ -84,13 +93,13 @@ public class HabiticaSnackbar extends BaseTransientBottomBar { @Override public void animateContentIn(int delay, int duration) { - ViewCompat.setScaleY(content, 0f); + content.setScaleY(0f); ViewCompat.animate(content).scaleY(1f).setDuration(duration).setStartDelay(delay); } @Override public void animateContentOut(int delay, int duration) { - ViewCompat.setScaleY(content, 1f); + content.setScaleY(1); ViewCompat.animate(content).scaleY(0f).setDuration(duration).setStartDelay(delay); } }