From a873764794630f726aba27ce4f3c67ae8c62289c Mon Sep 17 00:00:00 2001
From: zhujie <leon.zhu@cloudroam.com.cn>
Date: 星期五, 18 四月 2025 17:40:32 +0800
Subject: [PATCH] 样式调整

---
 app/src/main/res/layout/activity_invitation_main.xml                       |    3 
 app/src/main/res/drawable/table_cell_border.xml                            |    7 +
 app/src/main/java/com/example/firstapp/adapter/InvitationRecordAdapter.kt  |   12 +-
 app/src/main/res/drawable/table_cell_border_no_right.xml                   |   16 ++++
 app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt |  146 ++---------------------------------
 5 files changed, 38 insertions(+), 146 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/adapter/InvitationRecordAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/InvitationRecordAdapter.kt
index 1d8e5f1..0eb9ae2 100644
--- a/app/src/main/java/com/example/firstapp/adapter/InvitationRecordAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/InvitationRecordAdapter.kt
@@ -11,7 +11,6 @@
 import com.example.firstapp.entity.InvitationRecord
 import com.example.firstapp.utils.Log
 
-
 class InvitationRecordAdapter(
     private val context: Context,
     private val data: List<InvitationRecord>,
@@ -20,17 +19,16 @@
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): InvitationRecordViewHolder {
         val view = LayoutInflater.from(context)
             .inflate(R.layout.activity_invitation_record, parent, false)
-
         return InvitationRecordViewHolder(view)
     }
-    override fun onBindViewHolder(holder: InvitationRecordViewHolder, position: Int) {
-        val record = data[position % data.size] // 使用取模实现循环
-        holder.recordmessage.text = "${record.userName}"
-        holder.recordstatus.text = "${record.status}"
 
+    override fun onBindViewHolder(holder: InvitationRecordViewHolder, position: Int) {
+        val record = data[position] // 直接使用实际位置
+        holder.recordmessage.text = record.userName
+        holder.recordstatus.text = record.status
     }
 
-    override fun getItemCount() = if (data.isEmpty()) 0 else Int.MAX_VALUE
+    override fun getItemCount() = data.size // 直接返回实际数据大小
 
     class InvitationRecordViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
         val recordmessage: TextView = itemView.findViewById(R.id.recordmessage)
diff --git a/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt b/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt
index 2bc9633..efb0e6c 100644
--- a/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt
+++ b/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt
@@ -72,9 +72,6 @@
 
         //加载数据
         getInvitereward()
-        //loadData()
-
-        //loadRecordData()
 
         //启动轮播
         startAutoScroll()
@@ -87,7 +84,6 @@
 
         //邀请码
         val invitationCodeText = findViewById<TextView>(R.id.invitationCodeText)
-        //invitationCodeText.text = "A1B2"
         invitationCodeText.text = formatInvitationCode(PreferencesManager.getInviteCode());
         findViewById<Button>(R.id.copyButton).setOnClickListener {
             val clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
@@ -100,88 +96,40 @@
         }
     }
 
+
     private fun initViews() {
         findViewById<TextView>(R.id.tv_notic).apply {
             text = Html.fromHtml(getString(R.string.invite_reward_text), Html.FROM_HTML_MODE_LEGACY)
         }
+
+        // 成功列表
         recyclerSuccessView = findViewById(R.id.invitationsuccessRecyclerView)
-        addSuccessListener()
-
-        recyclerRecordView = findViewById(R.id.invitationrecordRecyclerView)
-        addRecordListener()
-    }
-
-    private fun addSuccessListener() {
         recyclerSuccessView.viewTreeObserver.addOnGlobalLayoutListener {
             if (recyclerSuccessView.childCount > 0) {
-                // 计算预期高度(60dp转px)
                 val expectedHeight = dpToPx(60f)
                 if (itemHeight != expectedHeight) {
-                    // 修正所有item的高度
                     for (i in 0 until recyclerSuccessView.childCount) {
                         recyclerSuccessView.getChildAt(i).layoutParams.height = expectedHeight
                     }
-                    // 请求重新布局
                     recyclerSuccessView.requestLayout()
                     itemHeight = expectedHeight
                 }
             }
         }
-        recyclerSuccessView.layoutManager = object : LinearLayoutManager(this@InvitationActivity) {
-            override fun onMeasure(
-                recycler: RecyclerView.Recycler, state: RecyclerView.State,
-                widthSpec: Int, heightSpec: Int
-            ) {
-                if (itemHeight > 0) {
-                    // 使用实际测量的高度
-                    setMeasuredDimension(
-                        View.resolveSize(widthSpec, width),
-                        itemHeight
-                    )
-                } else {
-                    // 默认高度60dp
-                    val defaultHeight = TypedValue.applyDimension(
-                        TypedValue.COMPLEX_UNIT_DIP, 60f,
-                        resources.displayMetrics
-                    ).toInt()
-                    setMeasuredDimension(
-                        View.resolveSize(widthSpec, width),
-                        defaultHeight
-                    )
-                }
-            }
-        }
-    }
 
-    private fun addRecordListener() {
-        recyclerRecordView.viewTreeObserver.addOnGlobalLayoutListener {
-            if (recyclerSuccessView.childCount > 0) {
-                // 计算预期高度(60dp转px)
-                val expectedHeight = dpToPx(60f)
-                if (itemHeight != expectedHeight) {
-                    // 修正所有item的高度
-                    for (i in 0 until recyclerSuccessView.childCount) {
-                        recyclerSuccessView.getChildAt(i).layoutParams.height = expectedHeight
-                    }
-                    // 请求重新布局
-                    recyclerSuccessView.requestLayout()
-                    itemHeight = expectedHeight
-                }
-            }
-        }
-        recyclerRecordView.layoutManager = object : LinearLayoutManager(this@InvitationActivity) {
+
+        recyclerSuccessView.layoutManager = object : LinearLayoutManager(this) {
             override fun onMeasure(
-                recycler: RecyclerView.Recycler, state: RecyclerView.State,
+                recycler: RecyclerView.Recycler,
+                state: RecyclerView.State,
                 widthSpec: Int, heightSpec: Int
             ) {
                 if (itemHeight > 0) {
-                    // 使用实际测量的高度
                     setMeasuredDimension(
                         View.resolveSize(widthSpec, width),
                         itemHeight
                     )
                 } else {
-                    // 默认高度60dp
                     val defaultHeight = TypedValue.applyDimension(
                         TypedValue.COMPLEX_UNIT_DIP, 60f,
                         resources.displayMetrics
@@ -193,6 +141,9 @@
                 }
             }
         }
+        // 记录列表
+        recyclerRecordView = findViewById(R.id.invitationrecordRecyclerView)
+        recyclerRecordView.layoutManager = LinearLayoutManager(this)
     }
 
     private fun initSuccessAdapter() {
@@ -212,18 +163,7 @@
     }
 
     private fun initRecorddapter() {
-        recordadapter = InvitationRecordAdapter(this, recorddata).apply {
-            registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
-                override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
-                    // 数据插入时检查高度
-                    recyclerRecordView.post {
-                        if (recyclerRecordView.childCount > 0) {
-                            itemHeight = recyclerRecordView.getChildAt(0).height
-                        }
-                    }
-                }
-            })
-        }
+        recordadapter = InvitationRecordAdapter(this, recorddata)
         recyclerRecordView.adapter = recordadapter
     }
 
@@ -263,34 +203,6 @@
             }
         }
     }
-
-//    private fun loadData() {
-//        data.clear()
-//        data.addAll(
-//            listOf(
-//                InvitationRecord("H****e", "获得了1天会员", "已注册"),
-//                InvitationRecord("U****r", "获得了2天会员", "已注册"),
-//                InvitationRecord("A****e", "获得了免广告特权", "已注册"),
-//                InvitationRecord("B****e", "获得了3天会员", "已注册"),
-//                InvitationRecord("C****o", "获得了4天会员", "已注册")
-//            )
-//        )
-//        adapter.notifyDataSetChanged()
-//    }
-
-//    private fun loadRecordData() {
-//        recorddata.clear()
-//        recorddata.addAll(
-//            listOf(
-//                InvitationRecord("M****e", "", "未注册"),
-//                InvitationRecord("Q****r", "", "已注册"),
-//                InvitationRecord("W****e", "", "未注册"),
-//                InvitationRecord("E****e", "", "未注册"),
-//                InvitationRecord("R****o", "", "已注册")
-//            )
-//        )
-//        recordadapter.notifyDataSetChanged()
-//    }
 
     private fun showImagePreviewDialog() {
         val dialog = Dialog(this, android.R.style.Theme_Translucent_NoTitleBar).apply {
@@ -380,7 +292,6 @@
 
             // 使用取模运算确保位置在有效范围内
             currentScrollPosition++
-            //currentRecordScrollPosition++
 
             // 创建自定义平滑滚动器
             val smoothScroller = object : LinearSmoothScroller(this@InvitationActivity) {
@@ -405,32 +316,9 @@
                 targetPosition = currentScrollPosition
             }
 
-//            val smoothRecordScroller = object : LinearSmoothScroller(this@InvitationActivity) {
-//                override fun getVerticalSnapPreference(): Int = SNAP_TO_START
-//
-//                override fun calculateDyToMakeVisible(view: View, snapPreference: Int): Int {
-//                    // 计算需要滚动的距离,确保完整显示下一个item
-//                    val top = view.top
-//                    val height = view.height
-//                    return when {
-//                        snapPreference == SNAP_TO_START -> -top
-//                        snapPreference == SNAP_TO_END -> -(top - (recyclerRecordView.height - height))
-//                        else -> -(top - (recyclerRecordView.height / 2 - height / 2))
-//                    }
-//                }
-//
-//                override fun calculateTimeForScrolling(dx: Int): Int {
-//                    // 根据滚动距离动态计算时间,保持匀速
-//                    return maxOf((500f * abs(dx) / itemHeight).toInt(), 200)
-//                }
-//            }.apply {
-//                targetPosition = currentRecordScrollPosition
-//            }
 
             // 启动平滑滚动
             recyclerSuccessView.layoutManager?.startSmoothScroll(smoothScroller)
-
-            //recyclerRecordView.layoutManager?.startSmoothScroll(smoothRecordScroller)
 
             // 更智能的边界检测
             (recyclerSuccessView.layoutManager as? LinearLayoutManager)?.let { lm ->
@@ -444,18 +332,6 @@
                     recyclerSuccessView.scrollToPosition(jumpPosition)
                 }
             }
-
-//            (recyclerRecordView.layoutManager as? LinearLayoutManager)?.let { lm ->
-//                val lastVisible = lm.findLastVisibleItemPosition()
-//                val totalItems = recordadapter.itemCount
-//
-//                // 当接近"虚拟列表"末尾时,跳转到中间位置
-//                if (lastVisible >= totalItems - 3) {
-//                    val jumpPosition = (totalItems / 2) * (Int.MAX_VALUE / totalItems)
-//                    currentRecordScrollPosition = jumpPosition
-//                    recyclerRecordView.scrollToPosition(jumpPosition)
-//                }
-//            }
 
             handler.postDelayed(this, scrollInterval)
         }
diff --git a/app/src/main/res/drawable/table_cell_border.xml b/app/src/main/res/drawable/table_cell_border.xml
index e589ce8..528b645 100644
--- a/app/src/main/res/drawable/table_cell_border.xml
+++ b/app/src/main/res/drawable/table_cell_border.xml
@@ -1,4 +1,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <stroke android:width="0.5dp" android:color="#DDDDDD"/>
-    <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp"/>
+    <solid android:color="#FFFFFF" />
+    <!-- 统一设置所有边线 -->
+    <stroke
+        android:width="1dp"
+        android:color="#DDDDDD" />
 </shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/table_cell_border_no_right.xml b/app/src/main/res/drawable/table_cell_border_no_right.xml
new file mode 100644
index 0000000..1a3662a
--- /dev/null
+++ b/app/src/main/res/drawable/table_cell_border_no_right.xml
@@ -0,0 +1,16 @@
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <solid android:color="#FFFFFF" />
+            <stroke
+                android:width="1dp"
+                android:color="#DDDDDD" />
+        </shape>
+    </item>
+    <!-- 用白色覆盖右边框 -->
+    <item android:right="1dp">
+        <shape>
+            <solid android:color="#FFFFFF" />
+        </shape>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_invitation_main.xml b/app/src/main/res/layout/activity_invitation_main.xml
index 40b98d9..2859f8b 100644
--- a/app/src/main/res/layout/activity_invitation_main.xml
+++ b/app/src/main/res/layout/activity_invitation_main.xml
@@ -159,14 +159,13 @@
                             android:id="@+id/tableLayout"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:background="@drawable/table_border"
                             android:paddingLeft="16dp"
                             android:paddingRight="16dp"
                             android:paddingBottom="16dp"
                             android:shrinkColumns="*"
                             android:stretchColumns="*">
 
-                            <TableRow android:background="@drawable/table_cell_border">
+                            <TableRow>
 
                                 <TextView
                                     android:layout_width="wrap_content"

--
Gitblit v1.9.3