diff options
author | DSIW <dsiw@dsiw-it.de> | 2016-06-10 03:23:35 +0200 |
---|---|---|
committer | DSIW <dsiw@dsiw-it.de> | 2016-06-10 04:50:56 +0200 |
commit | 09f12c81c12ed1993446e98779661d25ced42ad3 (patch) | |
tree | 5cb03fbb889ec281a794e8abdd9b69788d929dd8 | |
parent | b36d082b9f91c4fe6e9c360fe5e2fe914c88589b (diff) |
Remove CardView and use divider for separation
5 files changed, 97 insertions, 51 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java b/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java new file mode 100644 index 00000000..7bc66b62 --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java @@ -0,0 +1,51 @@ +package com.zeapo.pwdstore; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.drawable.Drawable; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +public class DividerItemDecoration extends RecyclerView.ItemDecoration { + + private static final int[] ATTRS = new int[]{android.R.attr.listDivider}; + + private Drawable mDivider; + + /** + * Default divider will be used + */ + public DividerItemDecoration(Context context) { + final TypedArray styledAttributes = context.obtainStyledAttributes(ATTRS); + mDivider = styledAttributes.getDrawable(0); + styledAttributes.recycle(); + } + + /** + * Custom divider will be used + */ + public DividerItemDecoration(Context context, int resId) { + mDivider = ContextCompat.getDrawable(context, resId); + } + + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + int left = parent.getPaddingLeft(); + int right = parent.getWidth() - parent.getPaddingRight(); + + int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + View child = parent.getChildAt(i); + + RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); + + int top = child.getBottom() + params.bottomMargin; + int bottom = top + mDivider.getIntrinsicHeight(); + + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } +} diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java index 1daa4f90..79401fbd 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java @@ -74,8 +74,11 @@ public class PasswordFragment extends Fragment{ recyclerView = (RecyclerView) view.findViewById(R.id.pass_recycler); recyclerView.setLayoutManager(mLayoutManager); -// -// // Set the adapter + + // use divider + recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), R.drawable.divider)); + + // Set the adapter recyclerView.setAdapter(recyclerAdapter); final FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab); diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java index 3f240515..af9a6776 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java @@ -33,14 +33,12 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl public static class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case public View view; - public CardView card; public TextView name; public TextView type; public ViewHolder(View v) { super(v); view = v; - card = (CardView) view.findViewById(R.id.password_card); name = (TextView) view.findViewById(R.id.label); type = (TextView) view.findViewById(R.id.type); } @@ -73,16 +71,16 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl holder.type.setText(pass.getFullPathName()); if (pass.getType() == PasswordItem.TYPE_CATEGORY) { - holder.card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_200)); +// holder.card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_200)); } else { - holder.card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_50)); +// holder.card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_50)); } holder.view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mActionMode != null) { - toggleSelection(holder, holder.getAdapterPosition(), holder.card, pass.getType()); + toggleSelection(holder, holder.getAdapterPosition(), null, pass.getType()); if (selectedItems.isEmpty()) { mActionMode.finish(); } else if (selectedItems.size() == 1 && !canEdit) { @@ -106,7 +104,7 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl if (mActionMode != null) { return false; } - toggleSelection(holder, holder.getAdapterPosition(), holder.card, pass.getType()); + toggleSelection(holder, holder.getAdapterPosition(), null, pass.getType()); canEdit = pass.getType() == PasswordItem.TYPE_PASSWORD; // Start the CAB using the ActionMode.Callback mActionMode = activity.startSupportActionMode(mActionModeCallback); @@ -208,15 +206,15 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl if (!selectedItems.remove(position)) { selectedItems.add(position); if (type == PasswordItem.TYPE_CATEGORY) { - card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_100)); +// card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_100)); } else { - card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_100)); +// card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_100)); } } else { if (type == PasswordItem.TYPE_CATEGORY) { - card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_200)); +// card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_200)); } else { - card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_50)); +// card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_50)); } } } diff --git a/app/src/main/res/drawable/divider.xml b/app/src/main/res/drawable/divider.xml new file mode 100644 index 00000000..cf2134ff --- /dev/null +++ b/app/src/main/res/drawable/divider.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <size android:height="1dp" /> + <solid android:color="@color/grey_300" /> +</shape>
\ No newline at end of file diff --git a/app/src/main/res/layout/password_row_layout.xml b/app/src/main/res/layout/password_row_layout.xml index 61c089df..0b877934 100644 --- a/app/src/main/res/layout/password_row_layout.xml +++ b/app/src/main/res/layout/password_row_layout.xml @@ -8,49 +8,37 @@ android:layout_marginRight="8dp" android:layout_marginTop="0dp"> - <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" - android:id="@+id/password_card" - style="@style/CardView.Light" + <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center" - card_view:cardCornerRadius="4dp" - card_view:cardElevation="4dp" - card_view:cardUseCompatPadding="true" - card_view:contentPaddingLeft="4dp" - card_view:contentPaddingTop="4dp"> + android:padding="8dp" + android:gravity="left"> - <RelativeLayout - android:layout_width="match_parent" + <TextView + android:id="@+id/type" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="8dp" - android:gravity="left"> + android:alpha="0.5" + android:maxLines="1" + android:ellipsize="start" + android:text="TYPE" + android:textSize="14dp" + android:textColor="@android:color/black" + android:layout_alignParentTop="true" + android:layout_alignLeft="@+id/label" + android:layout_alignStart="@+id/label" /> - <TextView - android:id="@+id/type" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:alpha="0.5" - android:maxLines="1" - android:ellipsize="start" - android:text="TYPE" - android:textSize="14dp" - android:textColor="@android:color/black" - android:layout_alignParentTop="true" - android:layout_alignLeft="@+id/label" - android:layout_alignStart="@+id/label" /> + <TextView + android:id="@+id/label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="FILE_NAME" + android:textColor="@android:color/black" + android:textSize="18dp" + android:layout_below="@+id/type" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" /> + </RelativeLayout> - <TextView - android:id="@+id/label" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_vertical" - android:text="FILE_NAME" - android:textColor="@android:color/black" - android:textSize="18dp" - android:layout_below="@+id/type" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" /> - </RelativeLayout> - </android.support.v7.widget.CardView> </LinearLayout>
\ No newline at end of file |