diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32ca44153..8a5b8f8e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
Changes:
- Improve contrast by always using white text on red buttons
+- Draggable bottom sheet in loyalty card view
## v1.4.1 (2020-12-01)
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
index d17509463..c7e8e922e 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
@@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
+import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.widget.TextViewCompat;
@@ -27,6 +28,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.zxing.BarcodeFormat;
@@ -37,8 +39,8 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
private static final String TAG = "Catima";
TextView cardIdFieldView;
+ TextView bottomSheet;
TextView noteView;
- View noteViewDivider;
TextView storeName;
ImageView barcodeImage;
View collapsingToolbarLayout;
@@ -103,8 +105,8 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
importURIHelper = new ImportURIHelper(this);
cardIdFieldView = findViewById(R.id.cardIdView);
+ bottomSheet = findViewById(R.id.bottom_sheet);
noteView = findViewById(R.id.noteView);
- noteViewDivider = findViewById(R.id.noteViewDivider);
storeName = findViewById(R.id.storeName);
barcodeImage = findViewById(R.id.barcode);
collapsingToolbarLayout = findViewById(R.id.collapsingToolbarLayout);
@@ -125,6 +127,35 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
}
}
});
+
+ final FloatingActionButton editButton = findViewById(R.id.fabEdit);
+ editButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putInt("id", loyaltyCardId);
+ bundle.putBoolean("update", true);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ finish();
+ }
+ });
+
+ BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
+ behavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
+ @Override
+ public void onStateChanged(@NonNull View bottomSheet, int newState) {
+ if (newState == BottomSheetBehavior.STATE_COLLAPSED || newState == BottomSheetBehavior.STATE_HIDDEN) {
+ editButton.show();
+ } else {
+ editButton.hide();
+ }
+ }
+
+ @Override
+ public void onSlide(@NonNull View bottomSheet, float slideOffset) { }
+ });
}
@Override
@@ -183,6 +214,7 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
if(loyaltyCard.note.length() > 0)
{
+ bottomSheet.setVisibility(View.VISIBLE);
noteView.setText(loyaltyCard.note);
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(noteView,
getResources().getInteger(R.integer.settings_card_note_min_font_size_sp)-1,
@@ -190,8 +222,7 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
}
else
{
- noteView.setVisibility(View.GONE);
- noteViewDivider.setVisibility(View.GONE);
+ bottomSheet.setVisibility(View.GONE);
}
storeName.setText(loyaltyCard.store);
@@ -272,20 +303,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
{
findViewById(R.id.barcode).setVisibility(View.GONE);
}
-
- FloatingActionButton editButton = findViewById(R.id.fabEdit);
- editButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
- Bundle bundle = new Bundle();
- bundle.putInt("id", loyaltyCardId);
- bundle.putBoolean("update", true);
- intent.putExtras(bundle);
- startActivity(intent);
- finish();
- }
- });
}
@Override
diff --git a/app/src/main/res/layout/loyalty_card_view_layout.xml b/app/src/main/res/layout/loyalty_card_view_layout.xml
index 5d44805f8..15d2d7a2c 100644
--- a/app/src/main/res/layout/loyalty_card_view_layout.xml
+++ b/app/src/main/res/layout/loyalty_card_view_layout.xml
@@ -59,44 +59,14 @@
android:layout_marginLeft="10.0dip"
android:layout_marginRight="10.0dip"
app:layout_constraintTop_toBottomOf="@+id/barcode"
- app:layout_constraintBottom_toTopOf="@+id/noteViewDivider"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:textAlignment="center"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="@dimen/singleCardCardIdTextSizeMin"
app:autoSizeMaxTextSize="@dimen/singleCardCardIdTextSizeMax"
- android:ellipsize="end"
- android:textIsSelectable="true"/>
-
-
-
-
+ android:ellipsize="end"/>
@@ -107,6 +77,36 @@
android:layout_gravity="top"/>
+
+
+
+
+
+
+
Are you sure you want to leave this screen? Changed made will not be saved.
Scan the barcode with your camera
Manually enter card ID
+ Pull up for more info