diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e30baae7ba..db95b44278 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -404,6 +404,9 @@ android:name = "com.gh.gamecenter.tag.TagsActivity" android:screenOrientation = "portrait" /> + + " + mEntrance); } @Override diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java index 3cb00dc6d1..78a022995f 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java @@ -1,19 +1,20 @@ package com.gh.base.fragment; -import androidx.lifecycle.Lifecycle; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + import androidx.annotation.LayoutRes; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import androidx.lifecycle.Lifecycle; import com.gh.base.OnListClickListener; import com.gh.base.OnRequestCallBackListener; @@ -236,4 +237,10 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB } } + // 为 fragment 附加 bundle (setArgument()) + public BaseFragment with(Bundle bundle) { + this.setArguments(bundle); + return this; + } + } diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 7492d31084..cf84cee47a 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -18,6 +18,7 @@ import com.gh.gamecenter.eventbus.EBSkip import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.qa.AskFragment import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity +import com.gh.gamecenter.qa.article.SimpleArticleListActivity import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity import com.gh.gamecenter.qa.column.detail.AskColumnDetailActivity import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity @@ -101,6 +102,14 @@ object DirectUtils { "tag" -> context.startActivity(TagsActivity.getIntent(context, linkEntity.text!!)) + "all_community_article" -> { + context.startActivity(SimpleArticleListActivity.getIntent( + context, + linkEntity.link ?: "", + entrance, + path)) + } + else -> DialogUtils.showLowVersionDialog(context) } } diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt index 5258aee773..6a5474b6ba 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt @@ -18,13 +18,10 @@ class HistoryWrapperFragment : BaseFragment_TabLayout() { } override fun initFragmentList(fragments: MutableList) { - fragments.add(AnswerFragment.getInstance(AnswerFragment.Type.HISTORY)) - fragments.add(CommunityArticleFragment.getInstance(CommunityArticleFragment.Type.HISTORY)) - fragments.add(ArticleFragment.getInstance(ArticleFragment.Type.HISTORY)) - fragments.add(HistoryGameListFragment()) - for (fragment in mFragmentsList) { - fragment.arguments = arguments - } + fragments.add(AnswerFragment.getInstance(AnswerFragment.Type.HISTORY).with(arguments)) + fragments.add(CommunityArticleFragment.getInstance(CommunityArticleFragment.Type.HISTORY).with(arguments)) + fragments.add(ArticleFragment.getInstance(ArticleFragment.Type.HISTORY).with(arguments)) + fragments.add(HistoryGameListFragment().with(arguments)) } override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index c7effc63f8..57b0d788fe 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -223,8 +223,7 @@ public class PersonalFragment extends BaseFragment implements Observer { if (mUserInfoEntity != null) { - DataUtils.onEvent(getActivity(), "我的光环", "签到"); + MtaHelper.onEvent("我的光环", "签到"); sign(); } else { - DataUtils.onEvent(getActivity(), "我的光环", "微信登录"); + MtaHelper.onEvent("我的光环", "微信登录"); GetLoginDataUtils.getInstance(getContext()).WCLogin(this); } }); @@ -302,19 +301,19 @@ public class PersonalFragment extends BaseFragment implements Observer startActivity(MyAskActivity.getIntent(getContext()))); break; case R.id.personal_home: diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt index b3ca3be770..3b6748ef4a 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt @@ -243,7 +243,7 @@ class AnswerDetailFragment : NormalFragment() { if (e != null && e.code() == 404 && e.response().errorBody()!!.string().isNotEmpty()) { HistoryHelper.deleteAnswerEntity(mAnswerId) - mBinding.bottomController?.containerControl?.visibility = View.GONE + mBinding.bottomController.containerControl.visibility = View.GONE mNoDataTv.setText(R.string.content_delete_hint) mNoData.visibility = View.VISIBLE mNoConn.visibility = View.GONE diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt index 904319b1c0..658189ff00 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.qa.article import android.app.Activity -import androidx.lifecycle.ViewModelProviders import android.content.Intent import android.os.Bundle import android.view.MenuItem +import androidx.lifecycle.ViewModelProviders import com.gh.common.util.EntranceUtils import com.gh.common.util.ifLogin import com.gh.gamecenter.R @@ -19,9 +19,9 @@ import com.halo.assistant.HaloApp import io.reactivex.Observable class MyArticleFragment : ListFragment>() { - private var mAdapter: MyArticleAdapter? = null private var mTargetUserId = "" + private var mAdapter: MyArticleAdapter? = null override fun provideListAdapter(): MyArticleAdapter { if (mAdapter == null) { @@ -56,9 +56,9 @@ class MyArticleFragment : ListFragment() { + + private var mAdapter: SimpleArticleListAdapter? = null + private lateinit var mViewModel: SimpleArticleListViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + mViewModel = provideListViewModel() + mViewModel.sortType = arguments?.getString(EntranceUtils.KEY_TYPE) ?: "" + + super.onCreate(savedInstanceState) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + setNavigationTitle("社区文章") + } + + override fun getItemDecoration(): RecyclerView.ItemDecoration { + return VerticalItemDecoration(requireContext(), 8F, true) + } + + override fun provideListViewModel(): SimpleArticleListViewModel { + return viewModelProvider() + } + + override fun provideListAdapter(): SimpleArticleListAdapter { + return mAdapter ?: SimpleArticleListAdapter(requireContext()).apply { mAdapter = this } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListViewModel.kt new file mode 100644 index 0000000000..c60918389d --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/article/SimpleArticleListViewModel.kt @@ -0,0 +1,30 @@ +package com.gh.gamecenter.qa.article + +import android.app.Application +import com.gh.gamecenter.baselist.ListViewModel +import com.gh.gamecenter.manager.UserManager +import com.gh.gamecenter.qa.entity.AnswerEntity +import com.gh.gamecenter.retrofit.RetrofitManager +import io.reactivex.Observable +import io.reactivex.Single + +class SimpleArticleListViewModel(application: Application) + : ListViewModel(application) { + + var sortType = "" + + override fun provideDataObservable(page: Int): Observable>? { + return null + } + + override fun provideDataSingle(page: Int): Single> { + return RetrofitManager.getInstance(getApplication()) + .api + .getAllCommunityArticles(UserManager.getInstance().community.id, sortType, page) + } + + override fun mergeResultLiveData() { + mResultLiveData.addSource(mListLiveData) { mResultLiveData.postValue(it) } + } + +} \ No newline at end of file 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 b680d7c87e..3a0ec5107e 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 @@ -5,10 +5,11 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.view.View; + import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; -import android.view.View; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.EntranceUtils; @@ -68,9 +69,9 @@ public class AskQuestionsRecommendsFragment extends ListFragment startActivity(QuestionEditActivity.Companion.getIntent(getContext())); + mOnLoginListener = () -> startActivity(QuestionEditActivity.Companion.getIntent(requireContext())); mParentFragment = exhaustParentFragment(); @@ -170,18 +171,18 @@ public class AskQuestionsRecommendsFragment extends ListFragment>() + val recommendedEntrances = MutableLiveData>() init { loadAskSlideColumn() + loadRecommendedEntrance() } fun loadAskSlideColumn() { @@ -40,4 +45,17 @@ class AskRecommendSubjectViewModel(application: Application) : AndroidViewModel( } }) } + + @SuppressLint("CheckResult") + fun loadRecommendedEntrance() { + RetrofitManager.getInstance(getApplication()).api + .getCommunityRecommendedEntrances(UserManager.getInstance().community.id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: ArrayList) { + recommendedEntrances.postValue(data) + } + }) + } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt index f1443742bd..bb1dfc884f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskRecommendWrapperFragment.kt @@ -9,14 +9,16 @@ import android.os.Message import android.view.Gravity import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.widget.TextView +import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentTransaction import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import androidx.viewpager.widget.ViewPager +import com.facebook.drawee.view.SimpleDraweeView import com.gh.base.fragment.BaseFragment -import com.gh.common.util.DisplayUtils -import com.gh.common.util.MtaHelper +import com.gh.common.util.* import com.gh.common.view.DumbRefreshLayout import com.gh.common.view.SwipeRefreshHeader import com.gh.gamecenter.R @@ -32,6 +34,7 @@ class AskRecommendWrapperFragment : BaseFragment() { private val mAppBar by bindView(R.id.recommend_subject_bar) private val mSubjectViewPager by bindView(R.id.ask_recommends_subject_vp) private val mChangeBtn by bindView(R.id.ask_recommend_change) + private val mEntranceContainer by bindView(R.id.ask_recommend_entrance_container) val refreshLayout by bindView(R.id.refresh_layout) val refreshHeader by bindView(R.id.swipe_refresh_header) @@ -73,7 +76,6 @@ class AskRecommendWrapperFragment : BaseFragment() { } } - override fun getLayoutId(): Int { return R.layout.fragment_ask_recommends_wrapper } @@ -96,11 +98,16 @@ class AskRecommendWrapperFragment : BaseFragment() { subjectViewModel?.slideLiveData?.observe(this, Observer { if (it != null && it.isNotEmpty()) { mSubjectViewPager.visibility = View.VISIBLE + mEntranceContainer.visibility = View.VISIBLE initViewPager(it) } else { mSubjectViewPager.visibility = View.GONE } }) + + subjectViewModel?.recommendedEntrances?.observeNonNull(this) { + initEntrance(it) + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -133,7 +140,7 @@ class AskRecommendWrapperFragment : BaseFragment() { private fun showMoreItemDialog() { val view = LayoutInflater.from(context).inflate(R.layout.ask_recommend_change, null) - val dialog = Dialog(context) + val dialog = Dialog(requireContext()) dialog.setContentView(view) val window = dialog.window if (window != null) { @@ -152,7 +159,7 @@ class AskRecommendWrapperFragment : BaseFragment() { val itemRecommend = view.findViewById(R.id.sort_recommend) val itemTime = view.findViewById(R.id.sort_time) - itemRecommend.setOnClickListener { _ -> + itemRecommend.setOnClickListener { recommendSelect.visibility = View.VISIBLE timeSelect.visibility = View.INVISIBLE mChangeBtn.text = "按精选排序" @@ -160,7 +167,7 @@ class AskRecommendWrapperFragment : BaseFragment() { changeFragment(false) MtaHelper.onEvent("问答页面", UserManager.getInstance().community.name, "推荐-按精选排序") } - itemTime.setOnClickListener { _ -> + itemTime.setOnClickListener { recommendSelect.visibility = View.INVISIBLE timeSelect.visibility = View.VISIBLE mChangeBtn.text = "按时间排序" @@ -169,13 +176,9 @@ class AskRecommendWrapperFragment : BaseFragment() { MtaHelper.onEvent("问答页面", UserManager.getInstance().community.name, "推荐-按时间排序") } - if (mRecommendsFragment != null && mRecommendsFragment!!.isVisible) { - recommendSelect.visibility = View.VISIBLE - timeSelect.visibility = View.INVISIBLE - } else { - recommendSelect.visibility = View.INVISIBLE - timeSelect.visibility = View.VISIBLE - } + val recommendFragmentIsVisible = mRecommendsFragment != null && mRecommendsFragment!!.isVisible + recommendSelect.visibleIf(recommendFragmentIsVisible) + timeSelect.visibleIf(!recommendFragmentIsVisible) } private fun initViewPager(slide: List) { @@ -186,6 +189,29 @@ class AskRecommendWrapperFragment : BaseFragment() { sendScrollMessage() } + private fun initEntrance(linkList: List?) { + linkList?.let { + mEntranceContainer.removeAllViews() + + for ((index, link) in it.withIndex()) { + if (index == 5) break + + val entranceViewItem = LayoutInflater.from(requireContext()).inflate(R.layout.item_entrance, mEntranceContainer, false) + + val entranceViewTv = entranceViewItem.findViewById(R.id.entrance_tv) + val entranceViewIv = entranceViewItem.findViewById(R.id.entrance_iv) + + entranceViewTv.text = link.name + ImageUtils.display(entranceViewIv, link.image) + + entranceViewItem.setOnClickListener { + DirectUtils.directToLinkPage(entranceViewTv.context, link, "", "首页-推荐-推荐入口") + } + + mEntranceContainer.addView(entranceViewItem) + } + } + } override fun onResume() { super.onResume() @@ -213,7 +239,7 @@ class AskRecommendWrapperFragment : BaseFragment() { transaction.commitAllowingStateLoss() } - private fun alterFragment(transaction: FragmentTransaction, cls: Class): T? { + private fun alterFragment(transaction: FragmentTransaction, cls: Class): T? { val findFragmentByTag = childFragmentManager.findFragmentByTag(cls.simpleName) var fragmentByTag: T? = if (findFragmentByTag != null) { findFragmentByTag as T @@ -240,6 +266,5 @@ class AskRecommendWrapperFragment : BaseFragment() { companion object { private const val VIEWPAGER_INTERVAL: Long = 3000 private const val VIEWPAGER_HANDLE_KEY = 0 - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestAdapter.kt index 7027f7e471..b3ee67c793 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/newest/RecommendNewestAdapter.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.qa.recommends.newest import android.content.Context -import androidx.recyclerview.widget.RecyclerView import android.view.View import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder @@ -16,7 +16,7 @@ import com.gh.gamecenter.qa.entity.Questions import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity import com.gh.gamecenter.qa.recommends.AskQuestionsRecommendsViewHolder -class RecommendNewestAdapter(context: Context) : ListAdapter(context) { +open class RecommendNewestAdapter(context: Context) : ListAdapter(context) { override fun areItemsTheSame(oldItem: AnswerEntity?, newItem: AnswerEntity?): Boolean { return oldItem?.id == newItem?.id @@ -27,7 +27,7 @@ class RecommendNewestAdapter(context: Context) : ListAdapter(conte return ItemViewType.ITEM_BODY } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val view: View return when (viewType) { ItemViewType.ITEM_FOOTER -> { @@ -42,10 +42,10 @@ class RecommendNewestAdapter(context: Context) : ListAdapter(conte } override fun getItemCount(): Int { - return if (mEntityList.size > 0 || mIsOver) mEntityList.size + ListAdapter.FOOTER_ITEM_COUNT else 0 + return if (mEntityList.size > 0 || mIsOver) mEntityList.size + FOOTER_ITEM_COUNT else 0 } - override fun onBindViewHolder(holder: androidx.recyclerview.widget.RecyclerView.ViewHolder, position: Int) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (getItemViewType(position)) { ItemViewType.ITEM_BODY -> { val viewHolder = holder as AskQuestionsRecommendsViewHolder @@ -55,22 +55,21 @@ class RecommendNewestAdapter(context: Context) : ListAdapter(conte questions.title = answerEntity.articleTitle answerEntity.questions = questions } - val path = "问答-推荐-按时间" - viewHolder.initQuestionsHotViewHolder(mContext, answerEntity, "", path) + viewHolder.initQuestionsHotViewHolder(mContext, answerEntity, "", getPath()) viewHolder.mAskTitle.setOnClickListener { if ("community_article" == answerEntity.type) { - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, UserManager.getInstance().community, answerEntity.id!!, "", path)) + mContext.startActivity(ArticleDetailActivity.getIntent(mContext, UserManager.getInstance().community, answerEntity.id!!, "", getPath())) } else { val questions = answerEntity.questions - mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.id, "", path)) + mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.id, "", getPath())) } } viewHolder.itemView.setOnClickListener { if ("community_article" == answerEntity.type) { - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, UserManager.getInstance().community, answerEntity.id!!, "", path)) + mContext.startActivity(ArticleDetailActivity.getIntent(mContext, UserManager.getInstance().community, answerEntity.id!!, "", getPath())) } else { - mContext.startActivity(AnswerDetailActivity.getIntent(mContext, answerEntity.id, "", path)) + mContext.startActivity(AnswerDetailActivity.getIntent(mContext, answerEntity.id, "", getPath())) } } } @@ -82,4 +81,8 @@ class RecommendNewestAdapter(context: Context) : ListAdapter(conte } } + open fun getPath(): String { + return "问答-推荐-按时间" + } + } \ No newline at end of file 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 e73a7b47b9..31f324640e 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 @@ -1,8 +1,8 @@ package com.gh.gamecenter.qa.recommends.newest import android.app.Activity -import androidx.lifecycle.ViewModelProviders import android.content.Intent +import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView import com.gh.common.view.DumbRefreshLayout import com.gh.common.view.VerticalItemDecoration @@ -33,7 +33,7 @@ class RecommendNewestFragment : ListFragment getDeviceAlias(@Query("model") String model); + /** + * 获取社区推荐位 + */ + @GET("communities/{community_id}/community-recommends") + Single> getCommunityRecommendedEntrances(@Path("community_id") String communityId); + + /** + * 获取社区的全部文章 + */ + @GET("communities/{community_id}/articles") + Single> getAllCommunityArticles(@Path("community_id") String communityId, @Query("sort") String sort, @Query("page") int page); + /** * 获取评分修改记录 */ diff --git a/app/src/main/res/layout/ask_recommends_subject.xml b/app/src/main/res/layout/ask_recommends_subject.xml index a929878b78..175ad9c010 100644 --- a/app/src/main/res/layout/ask_recommends_subject.xml +++ b/app/src/main/res/layout/ask_recommends_subject.xml @@ -1,41 +1,55 @@ - + + android:id="@+id/ask_recommends_subject_vp" + android:layout_width="match_parent" + android:layout_height="128dp" + android:layout_marginLeft="20dp" + android:layout_marginRight="20dp" + android:layout_marginBottom="10dp" + android:clipChildren="false" + android:overScrollMode="never" + android:visibility="visible" /> + + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/ask_recommends_subject_vp" + android:background="@color/background"> - - + android:id="@+id/ask_recommend_change" + android:layout_width="wrap_content" + android:layout_height="35dp" + android:layout_marginLeft="20dp" + android:drawableRight="@drawable/ask_recommend_change" + android:drawablePadding="7dp" + android:gravity="center" + android:paddingTop="9dp" + android:paddingBottom="9dp" + android:text="按精选排序" + android:textColor="@color/title" + android:textSize="12sp" /> + + diff --git a/app/src/main/res/layout/ask_subject_top_item.xml b/app/src/main/res/layout/ask_subject_top_item.xml index f27da523db..b5b4496c19 100644 --- a/app/src/main/res/layout/ask_subject_top_item.xml +++ b/app/src/main/res/layout/ask_subject_top_item.xml @@ -19,7 +19,8 @@ imageUrl = "@{entity.icon}" android:layout_width = "match_parent" android:layout_height = "wrap_content" - app:viewAspectRatio = "2.3" /> + app:viewAspectRatio = "2.5" + app:layout_constraintTop_toTopOf = "parent" /> + + + + + +