Quellcode durchsuchen

[메인][Common] 리스티클 상세 스크롤 버그 수정

Hasemi vor 7 Jahren
Ursprung
Commit
49b2799a64

+ 28 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/contents/CustomListicleImageView.java

@@ -5,8 +5,8 @@ import android.support.constraint.ConstraintLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 
 import java.util.List;
 
@@ -45,23 +45,43 @@ public class CustomListicleImageView extends ConstraintLayout {
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     inflater.inflate(R.layout.custom_listicle_image_view, this);
 
-    // SnapHelper snapHelper = new Snapper(400);
     recyclerView = findViewById(R.id.recycler_view_listicle_view);
-    recyclerView.setNestedScrollingEnabled(false);
     recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
-
-    adpater= new CustomListicleImageViewAdapter(context, inflater, textImageBeanList, event -> {
-      Log.i("APP# MainBannerView | onEvent", "|" + event);
+    adpater = new CustomListicleImageViewAdapter(context, inflater, textImageBeanList, event -> {
       if (null != listener) {
       }
     });
-    recyclerView.setOnFlingListener(null);
     recyclerView.setAdapter(adpater);
 
+    recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
+      @Override
+      public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+        int action = e.getAction();
+        switch (action) {
+          case MotionEvent.ACTION_MOVE:
+            rv.getParent().requestDisallowInterceptTouchEvent(true);
+            break;
+          default:
+            break;
+        }
+        return false;
+      }
+
+      @Override
+      public void onTouchEvent(RecyclerView rv, MotionEvent e) {
+
+      }
+
+      @Override
+      public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+
+      }
+    });
+
 
   }
 
-  public void dispose(){
+  public void dispose() {
 
   }
 }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/contents/CustomListicleImageViewAdapter.java

@@ -46,7 +46,7 @@ public class CustomListicleImageViewAdapter extends RecyclerView.Adapter<CustomL
 
   @Override
   public void onBindViewHolder(@NonNull CustomListicleImageViewHolder holder, int position) {
-    holder.bind(position, textImageBeanList.get(position), event -> {
+    holder.bind(textImageBeanList.get(position), event -> {
       if(null != listener) {
         //listener.onEvent(event);
       }

+ 1 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/contents/CustomListicleImageViewHolder.java

@@ -39,9 +39,8 @@ public class CustomListicleImageViewHolder extends RecyclerView.ViewHolder {
     textViewTotalPage = itemView.findViewById(R.id.text_view_total_page);
   }
 
-  public void bind(int index, TextImageBean bean, IEventListener listener) {
+  public void bind(TextImageBean bean, IEventListener listener) {
     // TODO: 일단 dummy로 구현..
-
     imageViewBackground.setImageResource(bean.getImageResource());
     textViewTitleNumber.setText("05");
     textViewTitle.setText(bean.getTextResource());

+ 55 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/contents/CustomListicleInformationView.java

@@ -0,0 +1,55 @@
+package kr.co.zumo.app.lifeplus.view.custom.contents;
+
+import android.content.Context;
+import android.support.constraint.ConstraintLayout;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.widget.TextView;
+
+import kr.co.zumo.app.R;
+
+/**
+ * CustomListicleInformationView
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-11-27]   [최초 작성]
+ * @since 2018-11-27
+ */
+public class CustomListicleInformationView extends ConstraintLayout {
+
+  private String number;
+  private String description;
+
+  public CustomListicleInformationView(Context context, String number, String description) {
+    super(context);
+    this.number = number;
+    this.description = description;
+    init(context);
+  }
+
+  public CustomListicleInformationView(Context context) {
+    super(context);
+    init(context);
+  }
+
+  public CustomListicleInformationView(Context context, AttributeSet attrs) {
+    super(context, attrs);
+    init(context);
+  }
+
+  public CustomListicleInformationView(Context context, AttributeSet attrs, int defStyleAttr) {
+    super(context, attrs, defStyleAttr);
+    init(context);
+  }
+
+  private void init(Context context) {
+    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    inflater.inflate(R.layout.contents_listicle_detail_text, this);
+
+    ((TextView) findViewById(R.id.text_view_number)).setText(number);
+    ((TextView) findViewById(R.id.text_view_detail)).setText(description);
+  }
+}

+ 11 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsDetailListicleDetailViewHolder.java

@@ -1,7 +1,7 @@
 package kr.co.zumo.app.lifeplus.view.screen.contents;
 
-import android.support.constraint.ConstraintLayout;
 import android.view.View;
+import android.widget.LinearLayout;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -11,6 +11,7 @@ import kr.co.zumo.app.lifeplus.bean.TextImageBean;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.custom.contents.CustomListicleImageView;
+import kr.co.zumo.app.lifeplus.view.custom.contents.CustomListicleInformationView;
 
 /**
  * ContentsDetailListicleDetailViewHolder
@@ -25,7 +26,7 @@ import kr.co.zumo.app.lifeplus.view.custom.contents.CustomListicleImageView;
 public class ContentsDetailListicleDetailViewHolder extends ContentsDetailView {
 
   private CustomListicleImageView customListicleImageView;
-  private ConstraintLayout layoutContainer;
+  private LinearLayout layoutContainer;
 
 
   public ContentsDetailListicleDetailViewHolder(View itemView) {
@@ -36,15 +37,22 @@ public class ContentsDetailListicleDetailViewHolder extends ContentsDetailView {
 
   @Override
   public void bind() {
+
     List<TextImageBean> textImageBeans = new ArrayList<>();
     textImageBeans.add(new TextImageBean(R.drawable.img_bestbucket_banner_1, R.string.life_plus));
+    textImageBeans.add(new TextImageBean(R.drawable.img_bestbucket_banner_1, R.string.life_plus));
+    textImageBeans.add(new TextImageBean(R.drawable.img_bestbucket_banner_1, R.string.life_plus));
+    textImageBeans.add(new TextImageBean(R.drawable.img_bestbucket_banner_1, R.string.life_plus));
     customListicleImageView.init(itemView.getContext(), textImageBeans, new IEventListener() {
       @Override
       public void onEvent(Event event) {
-
       }
     });
 
+    for (int i = 0; i < 20; i++) {
+      CustomListicleInformationView informationView = new CustomListicleInformationView(itemView.getContext(), String.valueOf(i)+".", "description");
+      layoutContainer.addView(informationView);
+    }
   }
 
   @Override

+ 7 - 5
app/src/main/res/layout/contents_listicle_detail.xml

@@ -18,21 +18,23 @@
   <ScrollView
     android:id="@+id/scroll_view"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:layout_height="300dp"
     android:layout_marginStart="25dp"
     android:layout_marginTop="25dp"
     android:layout_marginEnd="25dp"
+    android:orientation="vertical"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/custom_listicle_image_view">
 
-    <android.support.constraint.ConstraintLayout
+    <LinearLayout
+      android:orientation="vertical"
       android:id="@+id/layout_container"
       android:layout_width="match_parent"
-      android:layout_height="0dp">
+      android:layout_height="match_parent">
 
-
-    </android.support.constraint.ConstraintLayout>
+    </LinearLayout>
 
   </ScrollView>
 

+ 24 - 30
app/src/main/res/layout/contents_listicle_detail_text.xml

@@ -4,37 +4,31 @@
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
-  android:layout_height="wrap_content">
+  android:layout_height="wrap_content"
+  android:layout_marginTop="7dp"
+  android:layout_marginBottom="7dp">
 
-  <android.support.constraint.ConstraintLayout
-    android:id="@+id/layout_first"
-    android:layout_width="match_parent"
+  <TextView
+    android:id="@+id/text_view_number"
+    android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    app:layout_constraintEnd_toEndOf="parent"
-    app:layout_constraintStart_toStartOf="parent">
+    android:lineSpacingExtra="5.5sp"
+    android:textColor="@color/CD0D0D0"
+    android:textSize="14sp"
+    tools:text="1."
+    />
 
-    <TextView
-      android:id="@+id/text_view_number1"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:lineSpacingExtra="5.5sp"
-      android:textColor="@color/CD0D0D0"
-      android:textSize="14sp"
-      tools:text="1."
-      />
-
-    <TextView
-      android:id="@+id/text_view_detail1"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:letterSpacing="-0.05"
-      android:lineSpacingExtra="9sp"
-      android:paddingEnd="30dp"
-      android:textColor="@color/C666666"
-      android:textSize="13sp"
-      app:layout_constraintStart_toEndOf="@+id/text_view_number1"
-      tools:text="대표적인 아트마켓이자 세계 주요 컬렉터들과 미술 관계자들이 한자리에 모이는 미술축제"
-      />
-
-  </android.support.constraint.ConstraintLayout>
+  <TextView
+    android:id="@+id/text_view_detail"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:letterSpacing="-0.05"
+    android:lineSpacingExtra="9sp"
+    android:layout_marginEnd="9dp"
+    android:paddingEnd="30dp"
+    android:textColor="@color/C666666"
+    android:textSize="13sp"
+    app:layout_constraintStart_toEndOf="@+id/text_view_number"
+    tools:text="대표적인 아트마켓이자 세계 주요 컬렉터들과 미술 관계자들이 한자리에 모이는 미술축제"
+    />
 </android.support.constraint.ConstraintLayout>

+ 1 - 0
app/src/main/res/layout/custom_listicle_image_view.xml

@@ -5,6 +5,7 @@
   android:layout_height="match_parent">
 
   <android.support.v7.widget.RecyclerView
+    android:orientation="horizontal"
     android:id="@+id/recycler_view_listicle_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent">