DoggyZhang před 1 měsícem
rodič
revize
725237a941
18 změnil soubory, kde provedl 188 přidání a 97 odebrání
  1. 1 0
      app/src/main/java/com/adealink/weparty/commonui/ext/RecyclerViewEx.kt
  2. 63 12
      app/src/main/java/com/adealink/weparty/ui/category/CategoryFragment.kt
  3. 32 0
      app/src/main/java/com/adealink/weparty/ui/category/adapter/CategoryListBottomViewBinder.kt
  4. 3 0
      app/src/main/java/com/adealink/weparty/ui/category/adapter/CategoryListTitleViewBinder.kt
  5. 7 1
      app/src/main/java/com/adealink/weparty/ui/category/data/CategoryData.kt
  6. 2 2
      app/src/main/res/drawable/category_tab_item_bg.xml
  7. 3 3
      app/src/main/res/layout/layout_category_item.xml
  8. 16 0
      app/src/main/res/layout/layout_category_item_bottom.xml
  9. 3 2
      app/src/main/res/layout/layout_category_item_title.xml
  10. 1 11
      app/src/main/res/layout/layout_category_tab_title.xml
  11. 1 1
      module/order/src/main/res/layout/activity_create_order.xml
  12. 1 1
      module/profile/src/main/java/com/adealink/weparty/profile/edit/adapter/AddPhotoItemViewBinder.kt
  13. 5 4
      module/profile/src/main/java/com/adealink/weparty/profile/edit/comp/EditPhotoWallComp.kt
  14. 2 2
      module/profile/src/main/java/com/adealink/weparty/profile/edit/viewmodel/EditProfileViewModel.kt
  15. 22 2
      module/profile/src/main/java/com/adealink/weparty/profile/ui/about/ProfileFragment.kt
  16. 20 23
      module/profile/src/main/res/layout/item_edit_profile_add_photo.xml
  17. 2 5
      module/profile/src/main/res/layout/item_edit_profile_photo.xml
  18. 4 28
      module/profile/src/main/res/layout/layout_profile_introduce.xml

+ 1 - 0
app/src/main/java/com/adealink/weparty/commonui/ext/RecyclerViewEx.kt

@@ -5,6 +5,7 @@ import android.view.View
 import androidx.recyclerview.widget.RecyclerView
 import androidx.recyclerview.widget.SimpleItemAnimator
 
+
 fun RecyclerView.disableItemAnimation() {
     val animator = this.itemAnimator
     if (animator is SimpleItemAnimator) {

+ 63 - 12
app/src/main/java/com/adealink/weparty/ui/category/CategoryFragment.kt

@@ -8,6 +8,7 @@ import com.adealink.frame.base.fastLazy
 import com.adealink.frame.ext.isViewBindingValid
 import com.adealink.frame.mvvm.view.viewBinding
 import com.adealink.frame.router.Router
+import com.adealink.frame.util.DisplayUtil
 import com.adealink.weparty.R
 import com.adealink.weparty.commonui.BaseFragment
 import com.adealink.weparty.commonui.ext.dp
@@ -20,12 +21,16 @@ import com.adealink.weparty.module.category.data.CategoryAction
 import com.adealink.weparty.module.joinus.JoinUs
 import com.adealink.weparty.module.playmate.Playmate
 import com.adealink.weparty.module.playmate.PlaymateModule
+import com.adealink.weparty.ui.category.adapter.CategoryListBottomViewBinder
 import com.adealink.weparty.ui.category.adapter.CategoryListItemViewBinder
 import com.adealink.weparty.ui.category.adapter.CategoryListTitleViewBinder
 import com.adealink.weparty.ui.category.adapter.CategoryTabTitleViewBinder
 import com.adealink.weparty.ui.category.data.CategoryItemData
+import com.adealink.weparty.ui.category.data.CategoryListBottomData
 import com.adealink.weparty.ui.category.data.CategoryListItemData
 import com.adealink.weparty.ui.category.data.CategoryListTitleData
+import kotlin.math.max
+
 
 class CategoryFragment : BaseFragment(R.layout.fragment_category) {
 
@@ -103,11 +108,6 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
         binding.rvTab.addItemDecoration(
             VerticalSpaceItemDecoration(24.dp())
         )
-        binding.rvTab.addOnScrollListener(object : RecyclerView.OnScrollListener() {
-            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
-
-            }
-        })
     }
 
     private fun initList() {
@@ -116,11 +116,14 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
         listAdapter.register(CategoryListItemViewBinder { item, position ->
             selectItem(item)
         })
+        listAdapter.register(CategoryListBottomViewBinder())
         listLayoutManger = GridLayoutManager(context, SPAN_COUNT, RecyclerView.VERTICAL, false)
         listLayoutManger.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
             override fun getSpanSize(position: Int): Int {
                 val data = listAdapter.items.getOrNull(position)
-                if (data is CategoryListTitleData) {
+                if (data is CategoryListTitleData
+                    || data is CategoryListBottomData
+                ) {
                     return SPAN_COUNT
                 }
                 return 1
@@ -153,7 +156,14 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
         if (toPosition != null && toPosition >= 0) {
             updateTitleTab(selectPosition)
             skipScrollTitle = true
-            listLayoutManger.scrollToPosition(toPosition)
+            listLayoutManger.scrollToPositionWithOffset(
+                toPosition,
+                if (toPosition == 0) {
+                    0
+                } else {
+                    (-48).dp()
+                }
+            )
         }
     }
 
@@ -171,7 +181,7 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
         val titlePosition = itemToTitlePosition.getOrNull(position)
         if (titlePosition != null && titlePosition >= 0) {
             updateTitleTab(titlePosition)
-            titleLayoutManger.scrollToPosition(titlePosition)
+            titleLayoutManger.scrollToPositionWithOffset(position, 0)
         }
     }
 
@@ -196,11 +206,19 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
                 }
                 titlePosition++
                 titleList.add(CategoryListTitleData(data))
-
+                itemList.add(
+                    CategoryListTitleData(
+                        data,
+                        marginTop = if (titlePosition == 0) {
+                            0
+                        } else {
+                            48.dp()
+                        }
+                    )
+                )
                 itemToTitlePosition.add(titlePosition)
-                itemList.add(CategoryListTitleData(data))
+                titleToItemPosition.add(itemList.size - 1)
 
-                titleToItemPosition.add(itemList.size + 1)
                 for (subData in data.subCategoryList) {
                     if (isHidden(listOf(subData.code))) {
                         continue
@@ -209,6 +227,7 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
                     itemList.add(CategoryListItemData(data.code, subData))
                 }
             }
+            itemList.add(CategoryListBottomData(DisplayUtil.getScreenHeight()))
             submitCategoryList(titleList, itemList)
         }
     }
@@ -229,7 +248,39 @@ class CategoryFragment : BaseFragment(R.layout.fragment_category) {
         this.titleList = titleList
         titleAdapter.submitList(titleList)
         this.itemList = itemList
-        listAdapter.submitList(itemList)
+        listAdapter.submitList(itemList, committed = {
+            calcBottomSpace(titleList, itemList)
+        })
+    }
+
+    private fun calcBottomSpace(
+        titleList: List<CategoryListTitleData>,
+        itemList: List<CategoryItemData>
+    ) {
+        binding.rvList.post {
+            if (isViewBindingValid()) {
+                val lastTab = titleList.lastOrNull() ?: return@post
+                var lastTabHeight = 0
+                if (titleList.size > 1) {
+                    lastTabHeight += (36 + 48).dp()
+                } else {
+                    lastTabHeight += 36.dp()
+                }
+
+                val line = if (lastTab.data.subCategoryList.size % SPAN_COUNT == 0) {
+                    lastTab.data.subCategoryList.size / SPAN_COUNT
+                } else {
+                    (lastTab.data.subCategoryList.size + SPAN_COUNT) / SPAN_COUNT
+                }
+                lastTabHeight += line * 66.dp() + max(line - 1, 0) * 10.dp()
+
+                val bottomItem = itemList.lastOrNull()
+                if (bottomItem is CategoryListBottomData) {
+                    bottomItem.height = max(binding.rvList.height - lastTabHeight, 0)
+                    listAdapter.notifyItemChanged(itemList.size - 1)
+                }
+            }
+        }
     }
 
     private fun selectItem(item: CategoryListItemData) {

+ 32 - 0
app/src/main/java/com/adealink/weparty/ui/category/adapter/CategoryListBottomViewBinder.kt

@@ -0,0 +1,32 @@
+package com.adealink.weparty.ui.category.adapter
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.view.updateLayoutParams
+import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
+import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
+import com.adealink.weparty.databinding.LayoutCategoryItemBottomBinding
+import com.adealink.weparty.ui.category.data.CategoryListBottomData
+
+class CategoryListBottomViewBinder :
+    ItemViewBinder<CategoryListBottomData, BindingViewHolder<LayoutCategoryItemBottomBinding>>() {
+
+    override fun onBindViewHolder(
+        holder: BindingViewHolder<LayoutCategoryItemBottomBinding>,
+        item: CategoryListBottomData,
+    ) {
+        holder.binding.vBottom.updateLayoutParams<ConstraintLayout.LayoutParams> {
+            height = item.height
+        }
+    }
+
+    override fun onCreateViewHolder(
+        inflater: LayoutInflater,
+        parent: ViewGroup,
+    ): BindingViewHolder<LayoutCategoryItemBottomBinding> {
+        return BindingViewHolder(
+            LayoutCategoryItemBottomBinding.inflate(inflater, parent, false)
+        )
+    }
+}

+ 3 - 0
app/src/main/java/com/adealink/weparty/ui/category/adapter/CategoryListTitleViewBinder.kt

@@ -15,6 +15,9 @@ class CategoryListTitleViewBinder :
         item: CategoryListTitleData,
     ) {
         holder.binding.tvTitle.text = item.data.name
+        holder.binding.root.setPadding(
+            0, item.marginTop, 0, 0
+        )
     }
 
     override fun onCreateViewHolder(

+ 7 - 1
app/src/main/java/com/adealink/weparty/ui/category/data/CategoryData.kt

@@ -8,6 +8,7 @@ import com.adealink.weparty.module.profile.data.UserInterest
 sealed class CategoryItemData : BaseListItemData
 data class CategoryListTitleData(
     val data: PlaymateCategoryData,
+    val marginTop: Int = 0,
 
     var selected: Boolean = false
 ) : CategoryItemData()
@@ -38,4 +39,9 @@ data class CategoryListItemData(
         return data == other.data
                 && selected == other.selected
     }
-}
+}
+
+
+data class CategoryListBottomData(
+    var height: Int
+) : CategoryItemData()

+ 2 - 2
app/src/main/res/drawable/category_tab_item_bg.xml

@@ -4,6 +4,6 @@
     <corners android:radius="200dp" />
     <gradient
         android:angle="0"
-        android:endColor="#B1EF5D"
-        android:startColor="#4ED2FF" />
+        android:endColor="#95E789"
+        android:startColor="#4ED2FE" />
 </shape>

+ 3 - 3
app/src/main/res/layout/layout_category_item.xml

@@ -7,8 +7,8 @@
 
     <com.adealink.frame.image.view.NetworkImageView
         android:id="@+id/iv_img"
-        android:layout_width="45dp"
-        android:layout_height="45dp"
+        android:layout_width="50dp"
+        android:layout_height="50dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
@@ -16,7 +16,7 @@
     <androidx.appcompat.widget.AppCompatTextView
         android:id="@+id/tv_tab"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
+        android:layout_height="14dp"
         android:layout_marginTop="2dp"
         android:ellipsize="end"
         android:gravity="center"

+ 16 - 0
app/src/main/res/layout/layout_category_item_bottom.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <View
+        android:id="@+id/v_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 3 - 2
app/src/main/res/layout/layout_category_item_title.xml

@@ -4,13 +4,14 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingHorizontal="10dp">
+    android:paddingBottom="10dp">
 
     <androidx.appcompat.widget.AppCompatTextView
         android:id="@+id/tv_title"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
+        android:layout_height="36dp"
         android:fontFamily="@font/poppins_semibold"
+        android:gravity="start|center_vertical"
         android:includeFontPadding="false"
         android:textColor="@color/color_FF4E5969"
         android:textSize="16sp"

+ 1 - 11
app/src/main/res/layout/layout_category_tab_title.xml

@@ -30,22 +30,12 @@
             android:textSize="16sp"
             app:layout_constrainedWidth="true"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@id/iv_selected"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             tools:text="Online Play Online Play Online Play"
             tools:textColor="@color/white" />
 
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_selected"
-            android:layout_width="12dp"
-            android:layout_height="12dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@id/tv_title"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/category_tab_selected_ic" />
-
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 

+ 1 - 1
module/order/src/main/res/layout/activity_create_order.xml

@@ -179,7 +179,7 @@
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintTop_toTopOf="parent"
                         app:price_icon_size="16dp"
-                        app:price_text_bold="false"
+                        app:price_text_bold="true"
                         app:price_text_size="16sp"
                         app:unit_text_size="16sp" />
 

+ 1 - 1
module/profile/src/main/java/com/adealink/weparty/profile/edit/adapter/AddPhotoItemViewBinder.kt

@@ -21,7 +21,7 @@ class AddPhotoItemViewBinder(
         holder.binding.root.onClick {
             onItemClick.invoke()
         }
-        holder.binding.tvAddDesc.text = item.getPhotoDesc(holder.layoutPosition)
+//        holder.binding.tvAddDesc.text = item.getPhotoDesc(holder.layoutPosition)
     }
 
     override fun onCreateViewHolder(

+ 5 - 4
module/profile/src/main/java/com/adealink/weparty/profile/edit/comp/EditPhotoWallComp.kt

@@ -1,15 +1,16 @@
 package com.adealink.weparty.profile.edit.comp
 
 import androidx.lifecycle.LifecycleOwner
-import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import com.adealink.frame.aab.util.getCompatString
 import com.adealink.frame.base.fastLazy
 import com.adealink.frame.mvvm.view.ViewComponent
 import com.adealink.frame.mvvm.viewmodel.activityViewModels
 import com.adealink.weparty.commonui.ext.dp
 import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.GridSpacingItemDecoration
+import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
 import com.adealink.weparty.imageselect.comp.TakeFromAlbumComp
 import com.adealink.weparty.module.image.data.PhotoData
 import com.adealink.weparty.profile.R
@@ -69,9 +70,9 @@ class EditPhotoWallComp(
                 }
             ))
         binding.rvPhoto.adapter = photoAdapter
-        binding.rvPhoto.layoutManager = GridLayoutManager(context, PHOTO_SPAN)
+        binding.rvPhoto.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
         binding.rvPhoto.addItemDecoration(
-            GridSpacingItemDecoration(PHOTO_SPAN, 4.dp(), 4.dp(), false)
+            HorizontalItemDecoration(10.dp(), 0, 0)
         )
 
         photoTouchCallback =

+ 2 - 2
module/profile/src/main/java/com/adealink/weparty/profile/edit/viewmodel/EditProfileViewModel.kt

@@ -86,8 +86,8 @@ class EditProfileViewModel : BaseViewModel() {
             photoItemList.add(PhotoItemData(data))
         }
         //小于9张图片,可以继续添加图片
-        for (i in photoList.size until MAX_PHOTO_COUNT) {
-            photoItemList.add(AddPhotoItemData)
+        if (photoItemList.size < MAX_PHOTO_COUNT) {
+            photoItemList.add(0, AddPhotoItemData)
         }
         photoItemListLD.send(photoItemList)
     }

+ 22 - 2
module/profile/src/main/java/com/adealink/weparty/profile/ui/about/ProfileFragment.kt

@@ -1,9 +1,13 @@
 package com.adealink.weparty.profile.ui.about
 
+import android.text.SpannableStringBuilder
+import androidx.annotation.DrawableRes
 import androidx.fragment.app.activityViewModels
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
+import com.adealink.frame.aab.util.getCompatDrawable
 import com.adealink.frame.base.fastLazy
+import com.adealink.frame.ext.findAndSetSpan
 import com.adealink.frame.mvvm.view.viewBinding
 import com.adealink.frame.router.Router
 import com.adealink.weparty.commonui.BaseFragment
@@ -13,6 +17,7 @@ import com.adealink.weparty.commonui.ext.gone
 import com.adealink.weparty.commonui.ext.show
 import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
 import com.adealink.weparty.commonui.recycleview.itemdecoration.VerticalSpaceItemDecoration
+import com.adealink.weparty.commonui.widget.CenterImageSpan
 import com.adealink.weparty.module.playmate.Playmate
 import com.adealink.weparty.module.profile.ProfileModule
 import com.adealink.weparty.module.profile.data.UserPlaymateSkill
@@ -24,6 +29,7 @@ import com.google.android.flexbox.FlexDirection
 import com.google.android.flexbox.FlexWrap
 import com.google.android.flexbox.FlexboxItemDecoration
 import com.google.android.flexbox.FlexboxLayoutManager
+import com.adealink.weparty.R as APP_R
 
 class ProfileFragment : BaseFragment(R.layout.fragment_profile) {
 
@@ -72,14 +78,16 @@ class ProfileFragment : BaseFragment(R.layout.fragment_profile) {
                 binding.vIntroduce.clLanguage.gone()
             } else {
                 binding.vIntroduce.clLanguage.show()
-                binding.vIntroduce.tvLanguage.text = languages
+                binding.vIntroduce.tvLanguage.text =
+                    getSpanText(APP_R.drawable.common_language_ic, languages)
             }
 
             if (userInfo?.intro.isNullOrEmpty()) {
                 binding.vIntroduce.clIntroduce.gone()
             } else {
                 binding.vIntroduce.clIntroduce.show()
-                binding.vIntroduce.tvIntroduce.text = userInfo.intro
+                binding.vIntroduce.tvIntroduce.text =
+                    getSpanText(APP_R.drawable.common_introduce_ic, userInfo.intro)
             }
 
             val interests = userInfo?.interests?.map {
@@ -105,6 +113,18 @@ class ProfileFragment : BaseFragment(R.layout.fragment_profile) {
         }
     }
 
+    private fun getSpanText(@DrawableRes drawableId: Int, text: String?): SpannableStringBuilder {
+        val testStr = "[icon] ${text ?: ""}"
+        return SpannableStringBuilder(testStr).apply {
+            findAndSetSpan(
+                CenterImageSpan(getCompatDrawable(drawableId).apply {
+                    setBounds(0, 0, 16.dp(), 16.dp())
+                }),
+                "[icon]"
+            )
+        }
+    }
+
     private fun goPlaymateDetail(detail: UserPlaymateSkill) {
         val act = activity ?: return
         Router.build(act, Playmate.Detail.PATH)

+ 20 - 23
module/profile/src/main/res/layout/item_edit_profile_add_photo.xml

@@ -1,11 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     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"
-    tools:layout_height="100dp"
-    tools:layout_width="100dp">
+    android:layout_width="90dp"
+    android:layout_height="90dp">
 
     <View
         android:layout_width="0dp"
@@ -20,29 +17,29 @@
         android:id="@+id/btn_add_picture"
         android:layout_width="24dp"
         android:layout_height="24dp"
-        app:layout_constraintBottom_toTopOf="@id/tv_add_desc"
+        app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_chainStyle="packed"
         app:srcCompat="@drawable/common_add_photo_ic" />
 
-    <androidx.appcompat.widget.AppCompatTextView
-        android:id="@+id/tv_add_desc"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="4dp"
-        android:ellipsize="end"
-        android:gravity="center"
-        android:includeFontPadding="false"
-        android:maxLines="3"
-        android:text="@string/profile_edit_photo_wall_tips_1"
-        android:textColor="@color/color_FF4E5969"
-        android:textSize="11sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/btn_add_picture"
-        app:layout_constraintWidth_percent="0.6" />
+    <!--    <androidx.appcompat.widget.AppCompatTextView-->
+    <!--        android:id="@+id/tv_add_desc"-->
+    <!--        android:layout_width="0dp"-->
+    <!--        android:layout_height="wrap_content"-->
+    <!--        android:layout_marginTop="4dp"-->
+    <!--        android:ellipsize="end"-->
+    <!--        android:gravity="center"-->
+    <!--        android:includeFontPadding="false"-->
+    <!--        android:maxLines="3"-->
+    <!--        android:text="@string/profile_edit_photo_wall_tips_1"-->
+    <!--        android:textColor="@color/color_FF4E5969"-->
+    <!--        android:textSize="11sp"-->
+    <!--        app:layout_constraintBottom_toBottomOf="parent"-->
+    <!--        app:layout_constraintEnd_toEndOf="parent"-->
+    <!--        app:layout_constraintStart_toStartOf="parent"-->
+    <!--        app:layout_constraintTop_toBottomOf="@id/btn_add_picture"-->
+    <!--        app:layout_constraintWidth_percent="0.6" />-->
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 2 - 5
module/profile/src/main/res/layout/item_edit_profile_photo.xml

@@ -1,11 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     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"
-    tools:layout_height="100dp"
-    tools:layout_width="100dp">
+    android:layout_width="90dp"
+    android:layout_height="90dp">
 
     <com.adealink.frame.image.view.NetworkImageView
         android:id="@+id/iv_picture"

+ 4 - 28
module/profile/src/main/res/layout/layout_profile_introduce.xml

@@ -24,30 +24,18 @@
         android:layout_marginTop="8dp"
         app:layout_constraintTop_toBottomOf="@id/tv_information">
 
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_language"
-            android:layout_width="16dp"
-            android:layout_height="16dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/common_language_ic" />
-
         <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tv_language"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:layout_marginStart="1dp"
-            android:gravity="start"
+            android:gravity="start|center_vertical"
             android:includeFontPadding="false"
-            android:lineSpacingExtra="0dp"
-            android:lineSpacingMultiplier="1"
             android:textColor="@color/color_FF4E5969"
             android:textSize="14sp"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@id/iv_language"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_goneMarginStart="4dp"
-            app:lineHeight="16dp"
             tools:text="Jakarta" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 
@@ -59,30 +47,18 @@
         app:layout_constraintTop_toBottomOf="@id/cl_language"
         app:layout_goneMarginTop="8dp">
 
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_introduce"
-            android:layout_width="16dp"
-            android:layout_height="16dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/common_introduce_ic" />
-
         <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tv_introduce"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:layout_marginStart="1dp"
-            android:gravity="start"
+            android:gravity="start|center_vertical"
             android:includeFontPadding="false"
-            android:lineSpacingExtra="0dp"
-            android:lineSpacingMultiplier="1"
             android:textColor="@color/color_FF4E5969"
             android:textSize="14sp"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@id/iv_introduce"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_goneMarginStart="4dp"
-            app:lineHeight="16dp"
             tools:text="Hello brother, multiple seasons of S, online,Hello brother, multiple seasons of S, online," />
     </androidx.constraintlayout.widget.ConstraintLayout>