diff --git a/app/src/main/java/com/gh/base/BaseActivity_TabLayout.java b/app/src/main/java/com/gh/base/BaseActivity_TabLayout.java index fc15bd7a76..a25ac48a94 100644 --- a/app/src/main/java/com/gh/base/BaseActivity_TabLayout.java +++ b/app/src/main/java/com/gh/base/BaseActivity_TabLayout.java @@ -9,6 +9,7 @@ import androidx.fragment.app.Fragment; import androidx.viewpager.widget.ViewPager; import com.gh.base.adapter.FragmentAdapter; +import com.gh.base.fragment.BaseFragment_TabLayout; import com.gh.common.view.TabIndicatorView; import com.gh.gamecenter.R; import com.google.android.material.tabs.TabLayout; @@ -45,7 +46,7 @@ public abstract class BaseActivity_TabLayout extends ToolBarActivity implements protected abstract void initTabTitleList(List tabTitleList); protected int provideIndicatorWidth() { - return 65; + return 20; } protected View provideTabView(int position, String tabTitle) { @@ -89,11 +90,14 @@ public abstract class BaseActivity_TabLayout extends ToolBarActivity implements for (int i = 0; i < mTabLayout.getTabCount(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); if (tab == null) continue; - View tabView = provideTabView(i, tab.getText() != null ? tab.getText().toString() : ""); - if (tabView == null) continue; + String tabTitle = tab.getText() != null ? tab.getText().toString() : ""; + View tabView = provideTabView(i, tabTitle); + if (tabView == null) + tabView = BaseFragment_TabLayout.createDefaultTabCustomView(tabTitle); tab.setCustomView(tabView); } + BaseFragment_TabLayout.initTabStyle(mTabLayout, mCheckedIndex); } @Override diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java b/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java index caf653df8f..51de1bd0e3 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java @@ -1,18 +1,28 @@ package com.gh.base.fragment; import android.content.Intent; +import android.graphics.Typeface; import android.os.Bundle; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import com.google.android.material.tabs.TabLayout; + import androidx.fragment.app.Fragment; import androidx.viewpager.widget.ViewPager; + +import android.view.LayoutInflater; import android.view.View; +import android.widget.CheckedTextView; +import android.widget.TextView; import com.gh.base.adapter.FragmentAdapter; import com.gh.common.view.TabIndicatorView; import com.gh.gamecenter.R; import com.gh.gamecenter.normal.NormalFragment; +import com.halo.assistant.HaloApp; +import com.lightgame.utils.Utils; import com.lightgame.view.NoScrollableViewPager; import java.util.ArrayList; @@ -46,7 +56,7 @@ public abstract class BaseFragment_TabLayout extends NormalFragment implements V protected abstract void initTabTitleList(List tabTitleList); protected int provideIndicatorWidth() { - return 65; + return 20; } protected View provideTabView(int position, String tabTitle) { @@ -94,11 +104,71 @@ public abstract class BaseFragment_TabLayout extends NormalFragment implements V for (int i = 0; i < mTabLayout.getTabCount(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); if (tab == null) continue; - View tabView = provideTabView(i, tab.getText() != null ? tab.getText().toString() : ""); - if (tabView == null) continue; + String tabTitle = tab.getText() != null ? tab.getText().toString() : ""; + View tabView = provideTabView(i, tabTitle); + if (tabView == null) tabView = createDefaultTabCustomView(tabTitle); tab.setCustomView(tabView); } + initTabStyle(mTabLayout, mCheckedIndex); + } + + public static void initTabStyle(TabLayout tabLayout, int currentItem) { + // 默认选择addOnTabSelectedListener不会回调 + int tabCount = tabLayout.getTabCount(); + if (tabCount > 0) { + TabLayout.Tab tab = tabLayout.getTabAt(currentItem); + if (tab != null) updateTabStyle(tab, true); + } + + tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + updateTabStyle(tab, true); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + updateTabStyle(tab, false); + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + updateTabStyle(tab, true); + } + }); + } + + private static void updateTabStyle(TabLayout.Tab tab, boolean isChecked) { + View tabView = tab.getCustomView(); + if (tabView == null) { + Utils.log("TabLayout->Tab样式不是通用样式,请检查"); + return; + } + + TextView tabTitle; + if (tabView instanceof TextView) { + tabTitle = (TextView) tabView; + } else { + tabTitle = tabView.findViewById(R.id.tab_title); + } + + if (tabTitle == null) { + Utils.log("TabLayout->Tab样式不是通用样式,请检查"); + return; + } + tabTitle.setTypeface(isChecked ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT); + } + + // 如果不设置View的话,无法动态设置字体样式 + @NonNull + public static View createDefaultTabCustomView(String title) { + View view = LayoutInflater.from(HaloApp.getInstance().getApplication().getBaseContext()).inflate(R.layout.tab_item, null); + View tabTitle = view.findViewById(R.id.tab_title); + if (tabTitle instanceof CheckedTextView) { + ((CheckedTextView) tabTitle).setText(title); + } + return view; } @Override diff --git a/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt b/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt index a520870f04..305af6d828 100644 --- a/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt @@ -36,7 +36,6 @@ class HelpAndFeedbackActivity : BaseActivity_TabLayout() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setNavigationTitle("帮助与反馈") - mTabIndicatorView.setIndicatorWidth(88) } override fun onPageSelected(position: Int) { diff --git a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java index 58e92c20d1..e1b0fc6336 100644 --- a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java @@ -43,13 +43,13 @@ import io.reactivex.schedulers.Schedulers; */ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayout.OnRefreshListener, OnRequestCallBackListener { - + @BindView(R.id.et_search) public EditText searchEt; @BindView(R.id.tv_search) public TextView searchTv; @BindView(R.id.tv_back) - public TextView backTv; + public View backTv; @BindView(R.id.toolbox_appbar) AppBarLayout mAppBar; @BindView(R.id.toolbox_rv) @@ -64,51 +64,51 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo SwipeRefreshLayout mRefresh; @BindView(R.id.reuse_ll_loading) View mLoading; - + private LinearLayoutManager mLayoutManager; private ToolBoxRvAdapter mRvAdapter; private ToolBoxRvAdapter mNormalRvAdapter; - + private boolean mIsSearch; // 记录页面状态 搜索页面/普通页面 private String mSearchKey; // 记录搜索关键字 - + Runnable runnable = () -> changeAdapter(true); - + @NonNull public static Intent getIntent(Context context, String entrance) { Intent intent = new Intent(context, ToolBoxActivity.class); intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); return intent; } - + @Override protected int getLayoutId() { return R.layout.activity_toolbox; } - + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setNavigationTitle("光环工具箱"); - + mRefresh.setColorSchemeResources(R.color.theme); mRefresh.setOnRefreshListener(this); - + // 跳转到工具箱 https://gitlab.ghzs.com/pm/halo-app-issues/issues/636 String gameId = getIntent().getStringExtra(EntranceUtils.KEY_GAMEID); String targetUrl = getIntent().getStringExtra(EntranceUtils.KEY_URL); if (!TextUtils.isEmpty(targetUrl) && !TextUtils.isEmpty(gameId)) { findGameAndOpenItsToolboxWebview(gameId, targetUrl); } - + mLayoutManager = new LinearLayoutManager(this); mToolboxRv.setLayoutManager(mLayoutManager); mRvAdapter = new ToolBoxRvAdapter(this, this, mIsSearch, mSearchKey); mToolboxRv.addItemDecoration(new VerticalItemDecoration(this, 8, false)); mToolboxRv.setAdapter(mRvAdapter); - + mNormalRvAdapter = mRvAdapter; - + mToolboxRv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { @@ -121,7 +121,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo } } }); - + mAppBar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { if (verticalOffset == 0) { mRefresh.setEnabled(true); @@ -133,10 +133,10 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo Util_System_Keyboard.hideSoftKeyboard(this); } }); - + initSearch(); } - + private void findGameAndOpenItsToolboxWebview(String gameId, String url) { RetrofitManager.getInstance(this) .getApi() @@ -147,7 +147,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo @Override public void onResponse(@Nullable List response) { if (response == null) return; - + for (ToolBoxEntity toolbox : response) { if (url.equals(toolbox.getUrl())) { Intent intent = WebActivity.getWebByCollectionTools(ToolBoxActivity.this, toolbox, false); @@ -157,14 +157,14 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo } }); } - + private void initSearch() { backTv.setOnClickListener(v -> search(false, searchEt.getText().toString())); - + TextHelper.limitTheLengthOfEditText(searchEt, 20, () -> { Utils.toast(this, "最多输入20字"); }); - + searchTv.setOnClickListener(v -> { MtaHelper.onEvent("我的光环_新", "工具箱", "点击搜索"); if (TextUtils.isEmpty(searchEt.getText().toString())) { @@ -173,13 +173,13 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo } search(true, searchEt.getText().toString()); }); - + searchEt.setOnFocusChangeListener((v, hasFocus) -> { if (!hasFocus) { Util_System_Keyboard.hideSoftKeyboard(this, searchEt); } }); - + searchEt.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_SEARCH) { searchTv.performClick(); @@ -187,8 +187,8 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo return false; }); } - - + + @OnClick({R.id.reuse_no_connection, R.id.reuse_none_data}) public void onClick(View view) { if (view.getId() == R.id.reuse_no_connection) { @@ -203,7 +203,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo } } } - + @Override public void loadDone() { mRefresh.setRefreshing(false); @@ -211,12 +211,12 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo mNoConnection.setVisibility(View.GONE); mLoading.setVisibility(View.GONE); } - + @Override public void loadDone(Object obj) { - + } - + @Override public void loadEmpty() { mRefresh.setRefreshing(false); @@ -229,7 +229,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo mNoneDataTv.setText(getResources().getString(R.string.game_empty)); } } - + @Override public void loadError() { mRefresh.setRefreshing(false); @@ -237,12 +237,12 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo mNoConnection.setVisibility(View.VISIBLE); mLoading.setVisibility(View.GONE); } - + @Override public void onRefresh() { mRefresh.postDelayed(runnable, 1000); } - + public void search(boolean isSearch, String searchKey) { if (mNoneData.getVisibility() == View.VISIBLE) { mNoneData.setVisibility(View.GONE); @@ -254,7 +254,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo mSearchKey = searchKey; changeAdapter(false); } - + private void changeAdapter(boolean isRefresh) { if (mIsSearch) { mRvAdapter = new ToolBoxRvAdapter(this, this, mIsSearch, mSearchKey); @@ -267,12 +267,12 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo } } mToolboxRv.setAdapter(mRvAdapter); - + if (mSearchKey != null) { searchEt.setText(mSearchKey); searchEt.setSelection(searchEt.getText().length()); } - + if (mIsSearch) { backTv.setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDownloadViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDownloadViewHolder.java index f3c9c6a77e..3ea5713e13 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDownloadViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameDownloadViewHolder.java @@ -37,9 +37,6 @@ public class GameDownloadViewHolder extends BaseRecyclerViewHolder { @BindView(R.id.dm_item_tv_startorpause) public TextView dmStartorpause; - @BindView(R.id.dm_item_line) - public View dmLine; - public GameDownloadViewHolder(View itemView) { super(itemView); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/SearchViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/SearchViewHolder.java deleted file mode 100644 index bf18cb4653..0000000000 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/SearchViewHolder.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gh.gamecenter.adapter.viewholder; - -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import com.gh.base.BaseRecyclerViewHolder; -import com.gh.gamecenter.R; - -import butterknife.BindView; - -/** - * Created by khy on 2016/12/26. - */ -public class SearchViewHolder extends BaseRecyclerViewHolder { - - @BindView(R.id.et_search) - public EditText searchEt; - @BindView(R.id.tv_search) - public TextView searchTv; - @BindView(R.id.tv_back) - public TextView backTv; - - public SearchViewHolder(View itemView) { - super(itemView); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt index e463be8cd1..15f205a651 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -50,7 +50,7 @@ class DownloadFragment : BaseFragment_TabLayout() { override fun provideTabView(position: Int, tabTitle: String): View? { var view = LayoutInflater.from(context).inflate(R.layout.tab_item_download_number, null) - (view.findViewById(R.id.tab_download_title) as TextView).text = tabTitle + (view.findViewById(R.id.tab_title) as TextView).text = tabTitle when { INDEX_DOWNLOAD == position -> mDownloadNumber = view.findViewById(R.id.tab_download_number) INDEX_UPDATE == position -> mUpdateNumber = view.findViewById(R.id.tab_download_number) diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java index f8ea7c2be3..2ffb63eb35 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java @@ -52,8 +52,8 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi RecyclerViewExtended mDownloadmanagerRv; @BindView(R.id.reuse_nodata_skip) LinearLayout mNoDataSkip; - @BindView(R.id.downloadmanager_rl_head) - RelativeLayout mDownloadmanagerHeadRl; + @BindView(R.id.downloadmanager_head_container) + LinearLayout mDownloadmanagerHeadRl; @BindView(R.id.downloadmanager_tv_task) TextView mDownloadmanagerTaskTv; @BindView(R.id.reuse_nodata_skip_tv_hint) @@ -129,7 +129,7 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi adapter.getUrlMap().put(PackageUtils.getPackageNameByPath(HaloApp.getInstance().getApplication(), downloadEntity.getPath()), downloadEntity.getUrl()); - + // 用户焦点在下载管理页面时有任务完成,直接把所有下载完成的任务标记为已读 DownloadManager.getInstance(HaloApp.getInstance().getApplication()).markDownloadedTaskAsRead(); } else if (DownloadStatus.cancel.equals(downloadEntity.getStatus())) { // 有可能由于网络劫持造成的 @@ -177,7 +177,7 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi adapter.notifyItemInserted(adapter.getBase() + 1); adapter.notifyItemChanged(adapter.getBase()); EventBus.getDefault().post(new EBDownloadChanged("download", - View.VISIBLE, adapter.getDownloadingList().size())); + View.VISIBLE, adapter.getDownloadingList().size())); } } } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index fc98e4db1f..c7dfcd13c8 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -111,19 +111,10 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { final DownloadEntity downloadEntity; if (doneList.size() != 0 && position > 0 && position <= doneList.size()) { downloadEntity = doneList.get(position - 1); - - // 最后一个 - if (position == doneList.size() && downloadingList.size() != 0) { - viewHolder.dmLine.setVisibility(View.GONE); - } else { - viewHolder.dmLine.setVisibility(View.VISIBLE); - } } else if (doneList.isEmpty()) { downloadEntity = downloadingList.get(position - 1); - viewHolder.dmLine.setVisibility(View.VISIBLE); } else { downloadEntity = downloadingList.get(position - doneList.size() - 2); - viewHolder.dmLine.setVisibility(View.VISIBLE); } String icon = downloadEntity.getIcon(); if (!TextUtils.isEmpty(icon) && icon.contains("KuaiChuanIcon")) { // 来自快传的apk diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 43d19cb857..f9ebfe3648 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -18,9 +18,13 @@ import com.ethanhua.skeleton.Skeleton import com.ethanhua.skeleton.ViewSkeletonScreen import com.facebook.drawee.view.SimpleDraweeView import com.gh.base.BaseActivity +import com.gh.base.adapter.FragmentAdapter +import com.gh.base.fragment.BaseFragment_TabLayout +import com.gh.base.fragment.BaseFragment_TabLayout.createDefaultTabCustomView import com.gh.common.exposure.ExposureEvent import com.gh.common.util.* import com.gh.common.view.DrawableView +import com.gh.common.view.TabIndicatorView import com.gh.download.DownloadManager import com.gh.gamecenter.DownloadManagerActivity import com.gh.gamecenter.R @@ -41,8 +45,8 @@ import com.gh.gamecenter.normal.NormalFragment import com.gh.gamecenter.packagehelper.PackageViewModel import com.gh.gamecenter.suggest.SuggestType import com.google.android.material.appbar.AppBarLayout +import com.google.android.material.tabs.TabLayout import com.halo.assistant.HaloApp -import com.lightgame.adapter.BaseFragmentPagerAdapter import com.lightgame.download.DataWatcher import com.lightgame.download.DownloadEntity import com.lightgame.view.NoScrollableViewPager @@ -51,6 +55,7 @@ import com.shuyu.gsyvideoplayer.GSYVideoManager import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack import com.shuyu.gsyvideoplayer.utils.OrientationUtils +import kotlinx.android.synthetic.main.fragment_home.* import kotlinx.android.synthetic.main.piece_game_detail_video.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -79,16 +84,6 @@ class GameDetailFragment : NormalFragment() { lateinit var ratingScoreAverage: TextView @BindView(R.id.rating_score_container) lateinit var ratingScoreContainer: View - @BindView(R.id.gamedetail_tabbar_fuli_tv) - lateinit var mTabBarFuLiTv: CheckedTextView - @BindView(R.id.gamedetail_tabbar_xinxi_tv) - lateinit var mTabBarXinXiTv: CheckedTextView - @BindView(R.id.gamedetail_tabbar_rating) - lateinit var mTabBarRatingTv: CheckedTextView - @BindView(R.id.gamedetail_tabbar_line) - lateinit var mTabbarLine: View - @BindView(R.id.gamedetail_tabbar) - lateinit var mTabbar: View @BindView(R.id.gamedetail_appbar) lateinit var mAppBarLayout: AppBarLayout @BindView(R.id.gamedetail_kaifu_hint) @@ -117,6 +112,10 @@ class GameDetailFragment : NormalFragment() { lateinit var mErrorToolbar: Toolbar @BindView(R.id.error_toolbar_container) lateinit var mErrorToolbarContainer: View + @BindView(R.id.tab_layout) + lateinit var mTabLayout: TabLayout + @BindView(R.id.tab_indicator) + lateinit var mTabIndicatorView: TabIndicatorView private var mDownloadMenuIcon: ImageView? = null private var mDownloadCountHint: TextView? = null @@ -256,9 +255,6 @@ class GameDetailFragment : NormalFragment() { mCurVpPosition = position mKaifuHint.visibleIf(mIsShowKaifuHint && position == INDEX_TRENDES) - mTabBarFuLiTv.isChecked = (position == INDEX_TRENDES) - mTabBarXinXiTv.isChecked = (position == INDEX_DESC) - mTabBarRatingTv.isChecked = (position == INDEX_RATING) if (mFirstTimeSelected) { when (position) { @@ -267,6 +263,13 @@ class GameDetailFragment : NormalFragment() { else -> MtaHelper.onEvent("游戏详情_新", "默认_评分", mGameEntity!!.name) } mFirstTimeSelected = false + } else { + // 这个统计有歧义,当前统计包含左右滑动的选择 + when (position) { + INDEX_TRENDES -> MtaHelper.onEvent("游戏详情_新", "点击_动态", mGameEntity!!.name) + INDEX_DESC -> MtaHelper.onEvent("游戏详情_新", "点击_介绍", mGameEntity!!.name) + INDEX_RATING -> MtaHelper.onEvent("游戏详情_新", "点击_评分", mGameEntity!!.name) + } } } @@ -377,33 +380,7 @@ class GameDetailFragment : NormalFragment() { showAlertDialogIfNeeded(data.game) - val bundle = Bundle() - bundle.putParcelable(GameEntity.TAG, mGameEntity) - bundle.putString(EntranceUtils.KEY_ENTRANCE, mEntrance) - bundle.putBoolean(EntranceUtils.KEY_SCROLL_TO_LIBAO, arguments?.getBoolean(EntranceUtils.KEY_SCROLL_TO_LIBAO) ?: false) - bundle.putBoolean(EntranceUtils.KEY_OPEN_VIDEO_STREAMING, arguments?.getBoolean(EntranceUtils.KEY_OPEN_VIDEO_STREAMING) - ?: false) - - val list = ArrayList() - val fuliFragment = FuLiFragment() - fuliFragment.arguments = bundle - list.add(fuliFragment) - - val descFragment = DescFragment() - descFragment.arguments = bundle - list.add(descFragment) - - if (data.game.showComment) { - val ratingFragment = RatingFragment() - bundle.putBoolean(EntranceUtils.KEY_SKIP_GAME_COMMENT, mSkipGameComment) - bundle.putBoolean(EntranceUtils.KEY_DIRECT_COMMENT, mGameDetailEntity!!.directComment) - ratingFragment.arguments = bundle - list.add(ratingFragment) - } - - mViewPager.adapter = BaseFragmentPagerAdapter.newInstance(childFragmentManager, list) - mViewPager.currentItem = INDEX_DESC - + initViewPage(data) initGameDetailTop() val viewHolder = detailViewHolder @@ -411,9 +388,9 @@ class GameDetailFragment : NormalFragment() { // destinationTab 的优先级最高,关注和关联关注在它的后面 if (mDestinationTab == INDEX_TRENDES) { - tabPerformClick(mTabBarFuLiTv) + tabPerformClick(INDEX_TRENDES) } else if (mDestinationTab == INDEX_DESC) { - tabPerformClick(mTabBarXinXiTv) + tabPerformClick(INDEX_DESC) } if (mAutoDownload || mIsOpenPlatformWindow && mGameEntity!!.getApk().size > 1) { @@ -448,7 +425,7 @@ class GameDetailFragment : NormalFragment() { if (mGameDetailEntity!!.me.isGameConcerned || mGameDetailEntity!!.me.isGameRelatedConcerned || PackagesManager.findInstallByIdExcludeBlackPackage(mGameEntity!!.id) != null) { - tabPerformClick(mTabBarFuLiTv) + tabPerformClick(INDEX_TRENDES) } } } @@ -489,6 +466,54 @@ class GameDetailFragment : NormalFragment() { }) } + private fun initViewPage(data: UnifiedGameDetailEntity) { + val bundle = Bundle() + bundle.putParcelable(GameEntity.TAG, mGameEntity) + bundle.putString(EntranceUtils.KEY_ENTRANCE, mEntrance) + bundle.putBoolean(EntranceUtils.KEY_SCROLL_TO_LIBAO, arguments?.getBoolean(EntranceUtils.KEY_SCROLL_TO_LIBAO) + ?: false) + bundle.putBoolean(EntranceUtils.KEY_OPEN_VIDEO_STREAMING, arguments?.getBoolean(EntranceUtils.KEY_OPEN_VIDEO_STREAMING) + ?: false) + + val fragmentsList = ArrayList() + val tabTitleList = ArrayList() + + val fuliFragment = FuLiFragment() + fuliFragment.arguments = bundle + fragmentsList.add(fuliFragment) + tabTitleList.add(getString(R.string.game_detail_dongtai)) + + val descFragment = DescFragment() + descFragment.arguments = bundle + fragmentsList.add(descFragment) + tabTitleList.add(getString(R.string.game_detail_desc)) + + if (data.game.showComment) { + val ratingFragment = RatingFragment() + bundle.putBoolean(EntranceUtils.KEY_SKIP_GAME_COMMENT, mSkipGameComment) + bundle.putBoolean(EntranceUtils.KEY_DIRECT_COMMENT, mGameDetailEntity!!.directComment) + ratingFragment.arguments = bundle + fragmentsList.add(ratingFragment) + tabTitleList.add(getString(R.string.game_detail_comment)) + } + mViewPager.adapter = FragmentAdapter(childFragmentManager, fragmentsList, tabTitleList) + mViewPager.currentItem = INDEX_DESC + + mTabLayout.setupWithViewPager(mViewPager) + mTabIndicatorView.setupWithTabLayout(mTabLayout) + mTabIndicatorView.setupWithViewPager(mViewPager) + mTabIndicatorView.setIndicatorWidth(20) + + for (i in 0 until mTabLayout.tabCount) { + val tab = mTabLayout.getTabAt(i) ?: continue + val tabTitle = if (tab.text != null) tab.text.toString() else "" + val tabView = createDefaultTabCustomView(tabTitle) + tab.customView = tabView + } + + BaseFragment_TabLayout.initTabStyle(mTabLayout, mViewPager.currentItem) + } + private fun showAlertDialogIfNeeded(detailEntity: GameDetailEntity) { if (detailEntity.detailDialog != null) { val dialog = detailEntity.detailDialog @@ -581,20 +606,12 @@ class GameDetailFragment : NormalFragment() { mLoading.visibility = View.GONE mAppBarLayout.visibility = View.VISIBLE - val tabParams = mTabbar.layoutParams if (mGameDetailEntity!!.showComment) { - mTabBarRatingTv.visibility = View.VISIBLE - tabParams.width = mMaxWidth if (mSkipGameComment) { - tabPerformClick(mTabBarRatingTv) + tabPerformClick(INDEX_RATING) mAppBarLayout.setExpanded(false) mSkipGameComment = false } - } else { - mTabbarLine.visibility = View.GONE - mTabBarRatingTv.visibility = View.GONE - mTabBarXinXiTv.setBackgroundResource(R.drawable.tabbar_right_selector) - tabParams.width = mMaxWidth * 2 / 3 } updateConcernMenuIcon(mGameDetailEntity!!.me.isGameConcerned) @@ -771,7 +788,7 @@ class GameDetailFragment : NormalFragment() { @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(reuse: EBReuse) { if (SKIP_DESC == reuse.type) { - tabPerformClick(mTabBarXinXiTv) + tabPerformClick(INDEX_DESC) MtaHelper.onEvent("游戏详情_新", "默认_介绍", mGameEntity!!.name) } else if (OPEN_APPBAR == reuse.type && !mIsTouchScreen) { mAppBarLayout.setExpanded(true, true) @@ -825,21 +842,9 @@ class GameDetailFragment : NormalFragment() { } } - @OnClick(R.id.reuse_no_connection, R.id.gamedetail_tabbar_xinxi_tv, R.id.gamedetail_tabbar_fuli_tv, R.id.gamedetail_kaifu_hint, R.id.gamedetail_tabbar_rating) + @OnClick(R.id.reuse_no_connection, R.id.gamedetail_kaifu_hint) override fun onClick(v: View) { when (v.id) { - R.id.gamedetail_tabbar_fuli_tv -> { - mViewPager.currentItem = INDEX_TRENDES - MtaHelper.onEvent("游戏详情_新", "点击_动态", mGameEntity!!.name) - } - R.id.gamedetail_tabbar_xinxi_tv -> { - mViewPager.currentItem = INDEX_DESC - MtaHelper.onEvent("游戏详情_新", "点击_介绍", mGameEntity!!.name) - } - R.id.gamedetail_tabbar_rating -> { - mViewPager.currentItem = INDEX_RATING - MtaHelper.onEvent("游戏详情_新", "点击_评分", mGameEntity!!.name) - } R.id.reuse_no_connection -> { mLoading.visibility = View.VISIBLE mNoConnection.visibility = View.GONE @@ -907,9 +912,9 @@ class GameDetailFragment : NormalFragment() { } } - private fun tabPerformClick(view: View?) { + private fun tabPerformClick(position: Int) { if (!mIsPreferredTabSelected) { - view?.performClick() + mViewPager.currentItem = position mIsPreferredTabSelected = true } } diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java b/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java index 25687a5663..42aa94de9d 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java @@ -42,7 +42,7 @@ public class Libao1Fragment extends BaseFragment implements SwipeRefreshLayout.O @BindView(R.id.et_search) EditText mLibaoEtSearch; @BindView(R.id.tv_back) - TextView mLibaoTvBack; + View mLibaoTvBack; @BindView(R.id.tv_search) TextView mLibaoTvSearch; diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java index 8c78e8c1c6..bd63b310f1 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewFragment.java @@ -62,7 +62,7 @@ public class LibaoNewFragment extends BaseFragment implements SwipeRefreshLayout private boolean mHistoryIsEmpty; private boolean mIsDone; // 判断最新礼包列表是否加载完成,准备加载历史礼包 - private ViewSkeletonScreen mSkeleton ; + private ViewSkeletonScreen mSkeleton; Runnable runnable = new Runnable() { @Override @@ -95,7 +95,7 @@ public class LibaoNewFragment extends BaseFragment implements SwipeRefreshLayout mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new LibaoNewAdapter(getContext(), this, this, mEntrance); - mRecyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, false)); + mRecyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); mRecyclerView.setAdapter(mAdapter); mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java index e952544dab..7b9ee4351c 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java @@ -74,7 +74,7 @@ public class LibaoSearchFragment extends BaseFragment implements SwipeRefreshLay mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new LibaoSearchAdapter(this, this, mEntrance); - mRecyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, false)); + mRecyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); mRecyclerView.setAdapter(mAdapter); mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt index ce3108c888..b9e6ef6d6d 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.facebook.drawee.view.SimpleDraweeView import com.gh.base.adapter.FragmentAdapter +import com.gh.base.fragment.BaseFragment_TabLayout import com.gh.common.constant.Constants import com.gh.common.util.* import com.gh.common.view.HorizontalItemDecoration @@ -33,6 +34,7 @@ import com.gh.gamecenter.personalhome.home.UserHistoryViewModel import com.gh.gamecenter.personalhome.home.UserVideoHistoryFragment import com.gh.gamecenter.user.UserViewModel import com.google.android.material.appbar.AppBarLayout +import com.google.android.material.tabs.TabLayout import com.halo.assistant.HaloApp import com.lightgame.utils.Utils import kotlinx.android.synthetic.main.fragment_home.* @@ -188,7 +190,7 @@ class UserHomeFragment : NormalFragment() { } private fun updateTab(personalData: PersonalEntity) { - val keyPosition = arguments?.getInt(EntranceUtils.KEY_POSITION,-1) ?: -1 + val keyPosition = arguments?.getInt(EntranceUtils.KEY_POSITION, -1) ?: -1 val count = personalData.count val position = if (keyPosition > -1) { keyPosition @@ -217,6 +219,14 @@ class UserHomeFragment : NormalFragment() { tabIndicator.setupWithTabLayout(tabLayout) tabIndicator.setupWithViewPager(viewpager) tabIndicator.setIndicatorWidth(20) + + for (i in 0 until tabLayout.tabCount) { + val tab = tabLayout.getTabAt(i) ?: continue + val tabTitle = if (tab.text != null) tab.text.toString() else "" + val tabView = BaseFragment_TabLayout.createDefaultTabCustomView(tabTitle) + tab.customView = tabView + } + BaseFragment_TabLayout.initTabStyle(tabLayout, viewpager.currentItem) } private fun showPlayedGames(playedGames: List) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/CommunityFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/CommunityFragment.kt index aa3d1fd02b..328d5a4d05 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/CommunityFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/CommunityFragment.kt @@ -79,27 +79,22 @@ class CommunityFragment : BaseFragment_TabLayout() { } override fun initTabTitleList(tabTitleList: MutableList) { - tabTitleList.add("关注") - tabTitleList.add("推荐") - tabTitleList.add("专栏") - tabTitleList.add("全部") + tabTitleList.add(TAB_TITLE_FOLLOW) + tabTitleList.add(TAB_TITLE_RECOMMEND) + tabTitleList.add(TAB_TITLE_COLUMN) + tabTitleList.add(TAB_TITLE_ALL) } override fun provideTabView(position: Int, tabTitle: String?): View? { if (position == INDEX_FOLLOW) { val container = LayoutInflater.from(context).inflate(R.layout.community_follow_tab_item, null) - container.findViewById(R.id.content).text = tabTitle + container.findViewById(R.id.tab_title).text = tabTitle mFollowHint = container.findViewById(R.id.hint) return container } return super.provideTabView(position, tabTitle) } - - override fun provideIndicatorWidth(): Int { - return 20 - } - override fun getLayoutId(): Int { return R.layout.fragment_community } @@ -143,7 +138,7 @@ class CommunityFragment : BaseFragment_TabLayout() { } else { ImageUtils.displayIcon(mAskSelectCommunity, UserManager.getInstance().community.icon) showAvailableInfo() - mViewPager.currentItem = INDEX_HOT + mViewPager.currentItem = INDEX_RECOMMEND if (mCommunitiesSelectFragment != null) hideCommunitySelectFragmentAndShowCommunityWithHint() @@ -169,8 +164,10 @@ class CommunityFragment : BaseFragment_TabLayout() { mTabTitleList.removeAt(INDEX_COLUMN) } else if ((!it.isNullOrEmpty()) && mTabLayout.tabCount == 3) { // add - mTabLayout.addTab(mTabLayout.newTab().setText("专栏"), INDEX_COLUMN) - mTabTitleList.add(INDEX_COLUMN, "专栏") + val columnTab = mTabLayout.newTab().setText(TAB_TITLE_COLUMN) + columnTab.customView = createDefaultTabCustomView(TAB_TITLE_COLUMN) + mTabLayout.addTab(columnTab, INDEX_COLUMN) + mTabTitleList.add(INDEX_COLUMN, TAB_TITLE_COLUMN) } mBaseHandler.postDelayed({ @@ -190,7 +187,7 @@ class CommunityFragment : BaseFragment_TabLayout() { } } - if (tab.text == "全部") mViewPager.currentItem = INDEX_QUESTIONS + if (tab.text == TAB_TITLE_ALL) mViewPager.currentItem = INDEX_ALL MtaHelper.onEvent("问答页面", UserManager.getInstance().community.name, tab.text.toString() + "Tab") } @@ -199,9 +196,9 @@ class CommunityFragment : BaseFragment_TabLayout() { override fun onTabReselected(tab: TabLayout.Tab) { when (tab.position) { INDEX_FOLLOW -> mAskFollowFragment.scrollToTop(true) - INDEX_HOT -> mRecommendsFragment.scrollToTop(true) + INDEX_RECOMMEND -> mRecommendsFragment.scrollToTop(true) INDEX_COLUMN -> mColumnFragment.scrollToTop(true) - INDEX_QUESTIONS -> mAskAllFragment.scrollToTop(true) + INDEX_ALL -> mAskAllFragment.scrollToTop(true) } } }) @@ -260,7 +257,7 @@ class CommunityFragment : BaseFragment_TabLayout() { R.id.community_edit -> { val positionType = when { mViewPager.currentItem == INDEX_FOLLOW -> "关注-发布" - mViewPager.currentItem == INDEX_HOT -> "推荐-发布" + mViewPager.currentItem == INDEX_RECOMMEND -> "推荐-发布" else -> "推荐-发布" } MtaHelper.onEvent("问答页面", "问答页面", positionType) @@ -327,9 +324,9 @@ class CommunityFragment : BaseFragment_TabLayout() { && MainWrapperFragment.INDEX_ASK == busNine.position) { when (mViewPager.currentItem) { INDEX_FOLLOW -> mAskFollowFragment.scrollToTop(false) - INDEX_HOT -> mRecommendsFragment.scrollToTop(false) + INDEX_RECOMMEND -> mRecommendsFragment.scrollToTop(false) INDEX_COLUMN -> mColumnFragment.scrollToTop(false) - INDEX_QUESTIONS -> mAskAllFragment.scrollToTop(false) + INDEX_ALL -> mAskAllFragment.scrollToTop(false) } } } @@ -425,9 +422,9 @@ class CommunityFragment : BaseFragment_TabLayout() { companion object { const val INDEX_FOLLOW = 0 - const val INDEX_HOT = 1 + const val INDEX_RECOMMEND = 1 const val INDEX_COLUMN = 2 - const val INDEX_QUESTIONS = 3 // communities + const val INDEX_ALL = 3 // communities const val COMMUNITIES_SELECT_REQUEST = 103 const val FOLLOW_HINT_TRIGGER_HEIGHT = 10 @@ -438,6 +435,11 @@ class CommunityFragment : BaseFragment_TabLayout() { const val SP_KEY_CLICKED_SELECT_GAME = "has_clicked_select_game" const val EB_SHOW_QUESTION_BUTTON = "EB_SHOW_QUESTION_BUTTON" const val EB_HIDE_QUESTION_BUTTON = "EB_HIDE_QUESTION_BUTTON" + + const val TAB_TITLE_FOLLOW = "关注" + const val TAB_TITLE_RECOMMEND = "推荐" + const val TAB_TITLE_COLUMN = "专栏" + const val TAB_TITLE_ALL = "全部" } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListFragment.kt index 19aefcce43..85280bb838 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListFragment.kt @@ -50,9 +50,9 @@ class SimpleArticleListFragment : ListFragment CommunityFragment.FOLLOW_HINT_TRIGGER_HEIGHT) { - EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_QUESTIONS)) + EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_ALL)) } else if (dy < -CommunityFragment.FOLLOW_HINT_TRIGGER_HEIGHT) { - EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_QUESTIONS)) + EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_ALL)) } } }) diff --git a/app/src/main/java/com/gh/gamecenter/qa/column/detail/AskColumnDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/column/detail/AskColumnDetailActivity.kt index 94344fc611..4d77a703ac 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/column/detail/AskColumnDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/column/detail/AskColumnDetailActivity.kt @@ -8,9 +8,11 @@ import android.view.View import android.view.ViewGroup import android.widget.EditText import android.widget.LinearLayout +import androidx.fragment.app.Fragment import com.gh.base.OnViewClickListener import com.gh.base.ToolBarActivity import com.gh.base.adapter.FragmentAdapter +import com.gh.base.fragment.BaseFragment_TabLayout import com.gh.common.util.DisplayUtils import com.gh.common.util.EntranceUtils import com.gh.gamecenter.R @@ -28,11 +30,11 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import kotterknife.bindView import retrofit2.HttpException -import java.util.* +import kotlin.collections.ArrayList class AskColumnDetailActivity : ToolBarActivity() { - var mBinding: ActivityAskColumnDetailBinding? = null + private lateinit var mBinding: ActivityAskColumnDetailBinding private val mBarQuestionBtn by bindView(R.id.bar_question_btn) private val mBarSearchEdit by bindView(R.id.bar_search_edit) @@ -78,36 +80,36 @@ class AskColumnDetailActivity : ToolBarActivity() { } mBinding = ActivityAskColumnDetailBinding.bind(mContentView) - mBinding?.columnDetailDes?.setExpendText("...更多") - mBinding?.columnDetailTabRecommends?.isChecked = true - mBinding?.entity = mColumnEntity - mBinding?.clickListener = OnViewClickListener { v, position -> + mBinding.columnDetailDes?.setExpendText("...更多") + mBinding.columnDetailTabRecommends?.isChecked = true + mBinding.entity = mColumnEntity + mBinding.clickListener = OnViewClickListener { v, position -> when (v.id) { R.id.column_detail_tab_recommends -> { - mBinding?.columnDetailTabRecommends?.isChecked = true - mBinding?.columnDetailTabHot?.isChecked = false - mBinding?.columnDetailTabUnanswered?.isChecked = false + mBinding.columnDetailTabRecommends?.isChecked = true + mBinding.columnDetailTabHot?.isChecked = false + mBinding.columnDetailTabUnanswered?.isChecked = false } R.id.column_detail_tab_hot -> { - mBinding?.columnDetailTabRecommends?.isChecked = false - mBinding?.columnDetailTabHot?.isChecked = true - mBinding?.columnDetailTabUnanswered?.isChecked = false + mBinding.columnDetailTabRecommends?.isChecked = false + mBinding.columnDetailTabHot?.isChecked = true + mBinding.columnDetailTabUnanswered?.isChecked = false } R.id.column_detail_tab_unanswered -> { - mBinding?.columnDetailTabRecommends?.isChecked = false - mBinding?.columnDetailTabHot?.isChecked = false - mBinding?.columnDetailTabUnanswered?.isChecked = true + mBinding.columnDetailTabRecommends?.isChecked = false + mBinding.columnDetailTabHot?.isChecked = false + mBinding.columnDetailTabUnanswered?.isChecked = true } } - mBinding?.columnDetailViewpager?.currentItem = position as Int + mBinding.columnDetailViewpager?.currentItem = position as Int } mNoConn.setOnClickListener { loadColumn() } -// mBinding?.columnDetailAppbar?.addOnOffsetChangedListener { _, verticalOffset -> +// mBinding.columnDetailAppbar?.addOnOffsetChangedListener { _, verticalOffset -> // if (mQuestionTag.isNullOrEmpty()) { // if (Math.abs(verticalOffset) > DisplayUtils.dip2px(35F)) setNavigationTitle(mColumnEntity?.name) // else setNavigationTitle("") @@ -135,7 +137,7 @@ class AskColumnDetailActivity : ToolBarActivity() { mNoConn.visibility = View.GONE mAppBar.visibility = View.VISIBLE mColumnEntity = response - mBinding?.entity = mColumnEntity + mBinding.entity = mColumnEntity initViewPager() } @@ -155,11 +157,17 @@ class AskColumnDetailActivity : ToolBarActivity() { private fun initViewPager() { // set fragment - val fragmentList = ArrayList() + val fragmentList = ArrayList() fragmentList.add(HotFragment()) fragmentList.add(RecommendsFragment()) fragmentList.add(UnansweredFragment()) + // set tab title + val titleList = ArrayList() + titleList.add("热门") + titleList.add("精华") + titleList.add("待回答") + // add fragment argument val argument = Bundle() argument.putParcelable(EntranceUtils.KEY_ASK_COLUMN_TAG, mColumnEntity) @@ -167,12 +175,20 @@ class AskColumnDetailActivity : ToolBarActivity() { argument.putParcelable(EntranceUtils.KEY_COMMUNITY_DATA, mCommunityEntity) for (fragment in fragmentList) fragment.arguments = argument - // init viewpager - mBinding?.columnDetailViewpager?.run { - adapter = FragmentAdapter(supportFragmentManager, fragmentList) - offscreenPageLimit = fragmentList.size - setScrollable(false) + mBinding.columnDetailViewpager.offscreenPageLimit = fragmentList.size + mBinding.columnDetailViewpager.adapter = FragmentAdapter(supportFragmentManager, fragmentList, titleList) + mBinding.tabLayout.setupWithViewPager(mBinding.columnDetailViewpager) + mBinding.tabIndicator.setupWithTabLayout(mBinding.tabLayout) + mBinding.tabIndicator.setupWithViewPager(mBinding.columnDetailViewpager) + mBinding.tabIndicator.setIndicatorWidth(20) + + for (i in 0 until mBinding.tabLayout.tabCount) { + val tab = mBinding.tabLayout.getTabAt(i) ?: continue + val tabTitle = if (tab.text != null) tab.text.toString() else "" + val tabView = BaseFragment_TabLayout.createDefaultTabCustomView(tabTitle) + tab.customView = tabView } + BaseFragment_TabLayout.initTabStyle(mBinding.tabLayout, mBinding.columnDetailViewpager.currentItem) } override fun onMenuItemClick(item: MenuItem?): Boolean { diff --git a/app/src/main/java/com/gh/gamecenter/qa/newest/AskQuestionsNewBodyFragment.java b/app/src/main/java/com/gh/gamecenter/qa/newest/AskQuestionsNewBodyFragment.java index a467051ee7..80153489ae 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/newest/AskQuestionsNewBodyFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/newest/AskQuestionsNewBodyFragment.java @@ -81,9 +81,9 @@ public class AskQuestionsNewBodyFragment extends ListFragment CommunityFragment.FOLLOW_HINT_TRIGGER_HEIGHT) { - EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_QUESTIONS)); + EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_ALL)); } else if (dy < -CommunityFragment.FOLLOW_HINT_TRIGGER_HEIGHT) { - EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_QUESTIONS)); + EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_ALL)); } } }); diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java index 966dd34279..2c144b8dee 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java @@ -109,9 +109,9 @@ public class AskQuestionsRecommendsFragment extends ListFragment CommunityFragment.FOLLOW_HINT_TRIGGER_HEIGHT) { - EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_HOT)); + EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_RECOMMEND)); } else if (dy < -CommunityFragment.FOLLOW_HINT_TRIGGER_HEIGHT) { - EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_HOT)); + EventBus.getDefault().post(new EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_RECOMMEND)); } } }); diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestFragment.kt index f8e4508f60..ff87bcbaec 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestFragment.kt @@ -60,9 +60,9 @@ class RecommendNewestFragment : ListFragment 5) { - EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_HOT)) + EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_HIDE_QUESTION_BUTTON, CommunityFragment.INDEX_RECOMMEND)) } else if (dy < -5) { - EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_HOT)) + EventBus.getDefault().post(EBTypeChange(CommunityFragment.EB_SHOW_QUESTION_BUTTON, CommunityFragment.INDEX_RECOMMEND)) } } }) diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt index 0304e06c62..19aa9427ed 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt @@ -41,10 +41,6 @@ class VideoManagerActivity : BaseActivity_TabLayout() { } } - override fun provideIndicatorWidth(): Int { - return 20 - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -57,8 +53,6 @@ class VideoManagerActivity : BaseActivity_TabLayout() { val text = container.findViewById(R.id.layout_menu_text) text.text = "上传视频" - mTabIndicatorView.layoutParams?.height = 3F.dip2px() - if (mVideoLink != null) { onMenuItemClick(menuItem) } diff --git a/app/src/main/res/color/text_tabbar_style.xml b/app/src/main/res/color/text_tabbar_style.xml index b11e71c744..81b3cf11f5 100644 --- a/app/src/main/res/color/text_tabbar_style.xml +++ b/app/src/main/res/color/text_tabbar_style.xml @@ -1,10 +1,10 @@ - + - - - - - + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/article_draft_delete.png b/app/src/main/res/drawable-xhdpi/article_draft_delete.png deleted file mode 100644 index 6340e61f3f..0000000000 Binary files a/app/src/main/res/drawable-xhdpi/article_draft_delete.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/article_draft_delete.png b/app/src/main/res/drawable-xxhdpi/article_draft_delete.png new file mode 100644 index 0000000000..5deb188ce6 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/article_draft_delete.png differ diff --git a/app/src/main/res/drawable/ask_tab_indicator_bg.xml b/app/src/main/res/drawable/ask_tab_indicator_bg.xml index 77d2d775b6..89b869894e 100644 --- a/app/src/main/res/drawable/ask_tab_indicator_bg.xml +++ b/app/src/main/res/drawable/ask_tab_indicator_bg.xml @@ -1,10 +1,10 @@ - - + + - + - \ No newline at end of file + android:width="20dp" + android:height="3dp" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab_item_info_strategy_hint.xml b/app/src/main/res/drawable/tab_item_info_strategy_hint.xml new file mode 100644 index 0000000000..5d2bebe8ec --- /dev/null +++ b/app/src/main/res/drawable/tab_item_info_strategy_hint.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_ask_column_detail.xml b/app/src/main/res/layout/activity_ask_column_detail.xml index 8f6b697613..0766b8b5a6 100644 --- a/app/src/main/res/layout/activity_ask_column_detail.xml +++ b/app/src/main/res/layout/activity_ask_column_detail.xml @@ -1,173 +1,193 @@ - + - + + name="entity" + type="com.gh.gamecenter.qa.entity.AskTagGroupsEntity" /> - + name="clickListener" + type="com.gh.base.OnViewClickListener" /> + - + - + - + + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/column_detail_appbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@android:color/white" + android:gravity="center" + app:layout_behavior="com.gh.common.view.FixAppBarLayoutBehavior"> + visibleGone="@{entity == null? false: true}" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="vertical" + app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingLeft="20dp" + android:paddingTop="15dp" + android:paddingRight="20dp" + android:paddingBottom="10dp"> + android:id="@+id/column_detail_icon" + style="@style/frescoStyle" + imageUrl="@{entity.icon}" + android:layout_width="80dp" + android:layout_height="80dp" + android:layout_marginRight="15dp" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toRightOf="@id/column_detail_icon"> + android:id="@+id/column_detail_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingRight="20dp" + android:text="@{entity.name}" + android:textColor="@color/black" + android:textSize="14sp" /> + android:id="@+id/column_detail_des" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/column_detail_name" + android:layout_marginTop="10dp" + android:maxLines="3" + android:paddingRight="20dp" + android:text="@{entity.des}" + android:textColor="@color/hint" + android:textSize="12sp" /> - - - + + + + + + + + + + + + android:id="@+id/column_detail_tabbar" + android:layout_width="270dp" + android:layout_height="25dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="20dp" + android:background="@drawable/border_black_bg" + android:visibility="gone" + app:layout_constraintTop_toBottomOf="@id/column_detail_des"> + android:id="@+id/column_detail_tab_recommends" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:background="@drawable/tabbar_left_selector" + android:gravity="center" + android:onClick="@{(v)-> clickListener.onClick(v, 0)}" + android:text="热门" + android:textAlignment="center" + android:textColor="@color/tabbar_textcolor_selector" + android:textSize="12sp" /> + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@color/title" /> + android:id="@+id/column_detail_tab_hot" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:background="@drawable/tabbar_center_selector" + android:gravity="center" + android:onClick="@{(v)-> clickListener.onClick(v, 1)}" + android:text="精华" + android:textAlignment="center" + android:textColor="@color/tabbar_textcolor_selector" + android:textSize="12sp" /> + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@color/title" /> - - + android:id="@+id/column_detail_tab_unanswered" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:background="@drawable/tabbar_right_selector" + android:gravity="center" + android:onClick="@{(v)-> clickListener.onClick(v, 2)}" + android:text="待回答" + android:textAlignment="center" + android:textColor="@color/tabbar_textcolor_selector" + android:textSize="12sp" /> + + + android:id="@+id/column_detail_viewpager" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/column_detail_appbar" /> + layout="@layout/reuse_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> - + - + - - - + + + diff --git a/app/src/main/res/layout/activity_help_and_feedback.xml b/app/src/main/res/layout/activity_help_and_feedback.xml index c09efec184..8600f34411 100644 --- a/app/src/main/res/layout/activity_help_and_feedback.xml +++ b/app/src/main/res/layout/activity_help_and_feedback.xml @@ -22,7 +22,7 @@ @@ -30,9 +30,6 @@ android:id="@+id/activity_tab_layout" android:layout_width="match_parent" android:layout_height="match_parent" - app:tabMode="fixed" - app:tabIndicatorHeight="0dp" - app:tabSelectedTextColor="@color/theme_font" app:tabTextAppearance="@style/TabLayoutTextAppearance" /> diff --git a/app/src/main/res/layout/activity_tablayout_viewpager.xml b/app/src/main/res/layout/activity_tablayout_viewpager.xml index e9a53e7b16..39ca10617e 100644 --- a/app/src/main/res/layout/activity_tablayout_viewpager.xml +++ b/app/src/main/res/layout/activity_tablayout_viewpager.xml @@ -16,16 +16,13 @@ diff --git a/app/src/main/res/layout/activity_toolbox.xml b/app/src/main/res/layout/activity_toolbox.xml index 6e4d7e56ba..ab7bd48e0d 100644 --- a/app/src/main/res/layout/activity_toolbox.xml +++ b/app/src/main/res/layout/activity_toolbox.xml @@ -1,63 +1,65 @@ - + - + + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/toolbox_refresh" + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + android:id="@+id/toolbox_appbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/background" + android:gravity="center" + app:elevation="0dp" + app:layout_behavior="com.gh.common.view.FixAppBarLayoutBehavior"> - - + + + + android:id="@+id/toolbox_rv" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - - - + + + layout="@layout/reuse_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> + layout="@layout/reuse_none_data" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="80dp" /> - - \ No newline at end of file + layout="@layout/reuse_no_connection" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="80dp" /> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/answer_draft_item.xml b/app/src/main/res/layout/answer_draft_item.xml index bbe9c413a1..a24f9f30bf 100644 --- a/app/src/main/res/layout/answer_draft_item.xml +++ b/app/src/main/res/layout/answer_draft_item.xml @@ -23,6 +23,7 @@ android:layout_height = "wrap_content" android:layout_alignParentRight = "true" android:padding = "18dp" + app:layout_constraintTop_toTopOf="parent" android:src = "@drawable/article_draft_delete" app:layout_constraintRight_toRightOf = "parent" /> diff --git a/app/src/main/res/layout/community_follow_tab_item.xml b/app/src/main/res/layout/community_follow_tab_item.xml index c9cf9ca56e..2968f956b7 100644 --- a/app/src/main/res/layout/community_follow_tab_item.xml +++ b/app/src/main/res/layout/community_follow_tab_item.xml @@ -5,13 +5,12 @@ android:orientation="vertical"> + android:textColor="@color/text_tabbar_style" + android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/downloadmanager.xml b/app/src/main/res/layout/downloadmanager.xml index 28aff65272..faaf658699 100644 --- a/app/src/main/res/layout/downloadmanager.xml +++ b/app/src/main/res/layout/downloadmanager.xml @@ -1,44 +1,57 @@ - + + android:id="@+id/downloadmanager_rv_show" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/white" /> - + - + - + - + - + - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/downloadmanager_item_head.xml b/app/src/main/res/layout/downloadmanager_item_head.xml index 2226a3fec3..17dfb90468 100644 --- a/app/src/main/res/layout/downloadmanager_item_head.xml +++ b/app/src/main/res/layout/downloadmanager_item_head.xml @@ -1,28 +1,42 @@ - + - + - + + - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_downloadmanager_item.xml b/app/src/main/res/layout/fm_downloadmanager_item.xml index 754e2d5aed..cd0ec958b5 100644 --- a/app/src/main/res/layout/fm_downloadmanager_item.xml +++ b/app/src/main/res/layout/fm_downloadmanager_item.xml @@ -5,111 +5,100 @@ android:background="@drawable/reuse_listview_item_style" android:clickable="true" android:gravity="center_vertical" - android:orientation="vertical"> + android:orientation="horizontal" + android:paddingLeft="20dp" + android:paddingTop="8dp" + android:paddingRight="20dp" + android:paddingBottom="8dp"> + + - - + android:layout_marginLeft="10dp" + android:layout_marginRight="10dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="wrap_content" + android:layout_height="wrap_content"> - - - - - - + android:ellipsize="marquee" + android:includeFontPadding="false" + android:marqueeRepeatLimit="marquee_forever" + android:singleLine="true" + android:textColor="@color/text_333333" + android:textSize="14sp" + android:textStyle="bold" /> - - - - - - - - - + + + + + + + + + + + - + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_update_item.xml b/app/src/main/res/layout/fm_update_item.xml index bef7843600..0f10ab8c44 100644 --- a/app/src/main/res/layout/fm_update_item.xml +++ b/app/src/main/res/layout/fm_update_item.xml @@ -2,15 +2,14 @@ + android:paddingBottom="8dp"> + app:tabTextAppearance="@style/TabLayoutTextAppearance" /> diff --git a/app/src/main/res/layout/fragment_gamedetail_skeleton.xml b/app/src/main/res/layout/fragment_gamedetail_skeleton.xml index 56874d6aa6..27b8d7628c 100644 --- a/app/src/main/res/layout/fragment_gamedetail_skeleton.xml +++ b/app/src/main/res/layout/fragment_gamedetail_skeleton.xml @@ -93,7 +93,6 @@ android:layout_marginBottom = "20dp" > + android:background="@drawable/oval_message_hint_bg" + android:visibility="gone" /> + app:tabTextAppearance="@style/TabLayoutTextAppearance" /> diff --git a/app/src/main/res/layout/fragment_libao1.xml b/app/src/main/res/layout/fragment_libao1.xml index dfd9d68609..b52098119a 100644 --- a/app/src/main/res/layout/fragment_libao1.xml +++ b/app/src/main/res/layout/fragment_libao1.xml @@ -1,37 +1,39 @@ - + + android:id="@+id/libao_refresh" + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + android:id="@+id/libao_appbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/background" + android:gravity="center" + app:elevation="0dp" + app:layout_behavior="com.gh.common.view.FixAppBarLayoutBehavior"> - - + + + + android:id="@+id/layout_fragment_content" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_libao_wrapper.xml b/app/src/main/res/layout/fragment_libao_wrapper.xml index f83e2ededa..33f97a251f 100644 --- a/app/src/main/res/layout/fragment_libao_wrapper.xml +++ b/app/src/main/res/layout/fragment_libao_wrapper.xml @@ -1,43 +1,49 @@ - + + android:id="@+id/libao_history_title" + android:layout_width="match_parent" + android:layout_height="@dimen/tab_layout_height" + android:gravity="center" + android:text="@string/libao_history" + android:visibility="gone" /> + android:layout_width="match_parent" + android:layout_height="@dimen/tab_layout_height" + android:background="@android:color/white"> + + + android:id="@+id/fragment_tab_indicator" + android:layout_width="match_parent" + android:layout_height="2dp" + android:layout_alignParentBottom="true" /> - + app:tabMode="fixed" + app:tabSelectedTextColor="@color/theme" + app:tabTextAppearance="@style/TabLayoutTextAppearance" /> + + android:id="@+id/fragment_view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_link.xml b/app/src/main/res/layout/fragment_link.xml index 9a3006ccb8..725b63d12d 100644 --- a/app/src/main/res/layout/fragment_link.xml +++ b/app/src/main/res/layout/fragment_link.xml @@ -1,23 +1,75 @@ - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> - + + + + + + + + + - - \ No newline at end of file + android:paddingLeft="20dp" + android:paddingRight="20dp" + android:text="获取回答链接的方式:\n1.在回答详情页面,点击右上角【…】按钮 \n2.然后点击【分享】,再点击【复制链接】" + android:textColor="@color/title" /> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_subject_tab.xml b/app/src/main/res/layout/fragment_subject_tab.xml index 5e18fa198f..e1cb3bd3eb 100644 --- a/app/src/main/res/layout/fragment_subject_tab.xml +++ b/app/src/main/res/layout/fragment_subject_tab.xml @@ -35,7 +35,7 @@ app:tabIndicatorHeight="0dp" app:tabRippleColor="@color/transparent" app:tabSelectedTextColor="@color/theme" - app:tabTextAppearance="@style/HomeTabTextAppearance" /> + app:tabTextAppearance="@style/TabLayoutTextAppearance" /> diff --git a/app/src/main/res/layout/fragment_tablayout_viewpager.xml b/app/src/main/res/layout/fragment_tablayout_viewpager.xml index 6695e1c4d0..e4170a82f9 100644 --- a/app/src/main/res/layout/fragment_tablayout_viewpager.xml +++ b/app/src/main/res/layout/fragment_tablayout_viewpager.xml @@ -1,35 +1,33 @@ - + + android:layout_width="match_parent" + android:layout_height="@dimen/tab_layout_height" + android:background="@android:color/white"> + android:id="@+id/fragment_tab_indicator" + android:layout_width="match_parent" + android:layout_height="3dp" + android:layout_alignParentBottom="true" /> - + android:id="@+id/fragment_tab_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:tabTextAppearance="@style/TabLayoutTextAppearance" /> + + + android:id="@+id/fragment_view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetail_body.xml b/app/src/main/res/layout/gamedetail_body.xml index db47bd061d..4382553103 100644 --- a/app/src/main/res/layout/gamedetail_body.xml +++ b/app/src/main/res/layout/gamedetail_body.xml @@ -163,6 +163,7 @@ android:textColor="@android:color/white" android:textSize="18sp" tools:text="8.5" /> + @@ -177,66 +178,24 @@ - + android:layout_width="match_parent" + android:layout_height="wrap_content"> - + - - - - - - - - + app:tabTextAppearance="@style/TabLayoutTextAppearance" /> + - + + android:id="@+id/gameupdate_rv_show" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/white" /> - + + android:id="@+id/gameupdate_ll_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="gone"> + style="@style/android:Widget.Holo.ProgressBar" + android:layout_width="25dp" + android:layout_height="25dp" /> - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:text="@string/loading" + android:textColor="@color/content" + android:textSize="14sp" /> + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_search_bar.xml b/app/src/main/res/layout/layout_search_bar.xml index 1f6f5151d4..2a2d0f4fa5 100644 --- a/app/src/main/res/layout/layout_search_bar.xml +++ b/app/src/main/res/layout/layout_search_bar.xml @@ -1,55 +1,77 @@ - - + android:paddingLeft="20dp" + android:paddingTop="12dp" + android:paddingRight="20dp" + android:paddingBottom="12dp" + app:layout_scrollFlags="scroll"> + + + android:id="@+id/et_search" + android:layout_width="0dp" + android:layout_height="0dp" + android:background="@null" + android:hint="请输入关键词搜索" + android:imeOptions="actionSearch" + android:paddingLeft="40dp" + android:paddingRight="40dp" + android:singleLine="true" + android:textColorHint="@color/text_949494" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="14sp" + app:layout_constraintBottom_toBottomOf="@id/search_background" + app:layout_constraintLeft_toLeftOf="@id/search_background" + app:layout_constraintRight_toRightOf="@id/search_background" + app:layout_constraintTop_toTopOf="@id/search_background" /> + + + + + + android:id="@+id/tv_search" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="16dp" + android:text="搜索" + android:textColor="@color/theme_font" + android:textSize="14sp" + app:layout_constraintBottom_toBottomOf="@id/search_background" + app:layout_constraintLeft_toRightOf="@id/search_background" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="@id/search_background" /> - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/tab_item.xml b/app/src/main/res/layout/tab_item.xml new file mode 100644 index 0000000000..d867da5506 --- /dev/null +++ b/app/src/main/res/layout/tab_item.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/tab_item_download_number.xml b/app/src/main/res/layout/tab_item_download_number.xml index a17942f396..957959048e 100644 --- a/app/src/main/res/layout/tab_item_download_number.xml +++ b/app/src/main/res/layout/tab_item_download_number.xml @@ -5,7 +5,7 @@ android:gravity="center"> - + + android:id="@+id/tab_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:text="@string/news_gonglve" + android:textColor="@color/text_tabbar_style" + android:textSize="14sp" /> - \ No newline at end of file + android:layout_width="wrap_content" + android:layout_height="14dp" + android:layout_marginLeft="3dp" + android:background="@drawable/tab_item_info_strategy_hint" + android:gravity="center" + android:paddingLeft="4dp" + android:paddingRight="4dp" + android:text="精品" + android:textColor="@android:color/white" + android:textSize="8sp" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/toolbox_hint_item.xml b/app/src/main/res/layout/toolbox_hint_item.xml index d8efd55e2b..39b6581370 100644 --- a/app/src/main/res/layout/toolbox_hint_item.xml +++ b/app/src/main/res/layout/toolbox_hint_item.xml @@ -1,11 +1,12 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml new file mode 100644 index 0000000000..6418ecfb93 --- /dev/null +++ b/app/src/main/res/values/ids.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 175f839978..dc3c583e83 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -104,7 +104,7 @@ 继续发送 关注 动态 - 介绍 + 介绍 评论 请输入搜索关键字 搜索 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 8a79f50a46..7c01f12e22 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -69,6 +69,9 @@ - - - -