diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 095ade8041..982e02238d 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -193,6 +193,7 @@ public class EntranceUtils { public static final String KEY_UUID = "uuid"; public static final String KEY_IS_HOME_VIDEO = "isHomeVideo"; public static final String KEY_IS_HOME = "isHome"; + public static final String KEY_TAB_COUNT = "tab_count"; public static final String KEY_WEB_SHARE = "webShare"; public static final String KEY_ACTIVITY_NAME = "activityName";//活动名称 public static final String KEY_PAGINATION_TYPE = "paginationType";//活动分页方式 diff --git a/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt index 04caa4b7ea..bd5a1d860c 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt @@ -250,7 +250,7 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { val fragmentList = arrayListOf() for (tab in tabList) { val fragment = when (tab.type) { - "home" -> HomeFragment() + "home" -> HomeFragment().with(Bundle()) "top_game_comment" -> AmwayFragment().with(Bundle()) "block" -> GameFragment().with(Bundle().apply { putParcelable(EntranceUtils.KEY_BLOCK_DATA, tab) @@ -290,8 +290,9 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { "bbs" -> Fragment() else -> Fragment() } + fragment.arguments?.putInt(EntranceUtils.KEY_TAB_COUNT, tabList.size) fragment.arguments?.putBoolean(EntranceUtils.KEY_IS_HOME, true) - fragment.arguments?.putParcelable(EntranceUtils.KEY_EXPOSURE_SOURCE, ExposureSource("首页顶部Tab栏", tab.name!!)) + fragment.arguments?.putParcelable(EntranceUtils.KEY_EXPOSURE_SOURCE, ExposureSource("首页顶部Tab栏", tab.name ?: "")) fragmentList.add(fragment) } return fragmentList diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt index 20b726a34f..8d86398bdf 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt @@ -64,6 +64,7 @@ class HomeFragment : BaseFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mViewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java) + mViewModel.homeOnlyWithoutOtherTab = arguments?.getInt(EntranceUtils.KEY_TAB_COUNT) == 1 mViewModel.itemDataList.observeNonNull(this, callback = { mListAdapter.submitList(it) }) diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt index 21161726e5..0a802e66cb 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt @@ -3,6 +3,7 @@ package com.gh.gamecenter.home import android.content.Context import android.view.View import android.view.ViewGroup +import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType @@ -131,7 +132,13 @@ class HomeFragmentAdapter(context: Context, override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (holder) { - is HomeSlideListViewHolder -> holder.bindSlideList(mDataList[position], mBasicExposureSource) + is HomeSlideListViewHolder -> { + // 根据首页是否有其它 tab 设置不同的 marginTop + val marginTop = if (viewModel.homeOnlyWithoutOtherTab) 4F.dip2px() else 0 + (holder.binding.recyclerView.layoutParams as ConstraintLayout.LayoutParams) + .setMargins(0, marginTop, 0, 0) + holder.bindSlideList(mDataList[position], mBasicExposureSource) + } is HomeRecommendItemViewHolder -> holder.bindRecommend(mDataList[position].recommends!!) is HomeAmwayListViewHolder -> bindAmway(holder, position) is HomeGameItemViewHolder -> bindAttachGame(holder, position) diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt index d864a47c26..e1ce230e0b 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt @@ -46,6 +46,9 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) { // 所有专题里的所有游戏 ID 集合,供替换时排重用 private var mSubjectGameIdList = hashSetOf() + // 首页是否只有首页,不显示其它 tab + var homeOnlyWithoutOtherTab = false + var itemDataList: MediatorLiveData> = MediatorLiveData() var positionAndPackageMap = HashMap() // key: packageName + position, value: position diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b2331d6187..d503f4740c 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -24,7 +24,7 @@ 16dp 6dp - 8dp + 4dp 122dp