diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index f8027b2..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0d64563..de81da2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -25,6 +25,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 7c53e1b..017cbbf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -97,8 +97,8 @@ dependencies {
implementation "androidx.viewpager2:viewpager2:1.0.0"
//引入Rv管理
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.7'
+// implementation 'androidx.recyclerview:recyclerview:1.2.1'
+ implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.8'
/*retrofit raJava*/
@@ -140,8 +140,8 @@ dependencies {
annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbus_version"
//抖音
- implementation 'com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.9.0'
- implementation 'com.bytedance.ies.ugc.aweme:opensdk-common:0.1.9.0'
+ implementation 'com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.9.4'
+ implementation 'com.bytedance.ies.ugc.aweme:opensdk-common:0.1.9.4'
//WorkManager
implementation 'androidx.work:work-runtime:2.5.0'
diff --git a/app/src/main/java/com/qxy/potatos/module/Follow/fragment/FollowFragment.java b/app/src/main/java/com/qxy/potatos/module/Follow/fragment/FollowFragment.java
index f13f241..c4af58b 100644
--- a/app/src/main/java/com/qxy/potatos/module/Follow/fragment/FollowFragment.java
+++ b/app/src/main/java/com/qxy/potatos/module/Follow/fragment/FollowFragment.java
@@ -60,6 +60,7 @@ public class FollowFragment extends BaseFragment {
+ switch (mType) {
+ case FollowFragment.FOLLOWINGS: {
+ //每次刷新重新加载
+ recyclerView.setAdapter(null);
+ followingCursor = 0;
+ presenter.getFollowingsList(followingCursor, 12);
+ break;
+ }
+ case FollowFragment.Fans: {
+ recyclerView.setAdapter(null);
+ fanCursor = 0;
+ presenter.getFansList(fanCursor, 12);
+ break;
+ }
+ default:
+ break;
+ }
+ });
+
+ if (recyclerView.getAdapter() == null) {
+ switch (mType){
+ case FollowFragment.FOLLOWINGS:
+ followAdapter = new FollowingsRecycleViewAdapter(null);
+ recyclerView.setAdapter(followAdapter);
+ followAdapter.setEmptyView(emptyView);
+ break;
+ case FollowFragment.Fans:
+ fansAdapter = new FansRecycleViewAdapter(null);
+ recyclerView.setAdapter(fansAdapter);
+ fansAdapter.setEmptyView(emptyView);
+ break;
+ default:
+ break;
+ }
+ }else {
+ switch (mType) {
+ case FollowFragment.FOLLOWINGS:
+ followAdapter = (FollowingsRecycleViewAdapter) recyclerView.getAdapter();
+ followAdapter.setList(null);
+ followAdapter.setEmptyView(emptyView);
+ break;
+ case FollowFragment.Fans:
+ fansAdapter = (FansRecycleViewAdapter) recyclerView.getAdapter();
+ fansAdapter.setList(null);
+ fansAdapter.setEmptyView(emptyView);
+ break;
+ default:
+ break;
+
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/qxy/potatos/module/Follow/presenter/FollowPresenter.java b/app/src/main/java/com/qxy/potatos/module/Follow/presenter/FollowPresenter.java
index 1b80dbe..6a29583 100644
--- a/app/src/main/java/com/qxy/potatos/module/Follow/presenter/FollowPresenter.java
+++ b/app/src/main/java/com/qxy/potatos/module/Follow/presenter/FollowPresenter.java
@@ -23,9 +23,9 @@
*/
public class FollowPresenter extends BasePresenter {
- private MMKV mmkv = MMKV.defaultMMKV();
- private String token = mmkv.decodeString(GlobalConstant.ACCESS_TOKEN);
- private String openId = mmkv.decodeString(GlobalConstant.OPEN_ID);
+ private final MMKV mmkv = MMKV.defaultMMKV();
+ private final String token = mmkv.decodeString(GlobalConstant.ACCESS_TOKEN);
+ private final String openId = mmkv.decodeString(GlobalConstant.OPEN_ID);
public FollowPresenter(IFollowView baseView) {
super(baseView);
@@ -41,6 +41,7 @@ public void getFollowingsList(int cursor, int count) {
@Override
public void onError(String msg) {
LogUtil.e("获取关注列表失败:", msg);
+ baseView.setFailView();
baseView.loadFail(msg);
}
@@ -62,6 +63,7 @@ public void getFansList(int cursor, int count) {
@Override
public void onError(String msg) {
LogUtil.e("获取粉丝列表失败:", msg);
+ baseView.setFailView();
baseView.loadFail(msg);
}
diff --git a/app/src/main/java/com/qxy/potatos/module/Follow/view/IFollowView.java b/app/src/main/java/com/qxy/potatos/module/Follow/view/IFollowView.java
index d1efcdc..2aa6cb1 100644
--- a/app/src/main/java/com/qxy/potatos/module/Follow/view/IFollowView.java
+++ b/app/src/main/java/com/qxy/potatos/module/Follow/view/IFollowView.java
@@ -18,4 +18,6 @@ public interface IFollowView extends BaseView {
void showFansList(Fans followers);
void loadFail(String msg);
+
+ void setFailView();
}
diff --git a/app/src/main/java/com/qxy/potatos/module/home/activity/HomeActivity.java b/app/src/main/java/com/qxy/potatos/module/home/activity/HomeActivity.java
index 854fb12..7e7264b 100644
--- a/app/src/main/java/com/qxy/potatos/module/home/activity/HomeActivity.java
+++ b/app/src/main/java/com/qxy/potatos/module/home/activity/HomeActivity.java
@@ -77,6 +77,7 @@ public class HomeActivity extends BaseActivity list = new ArrayList<>();
+ private HomeAdapter adapter;
/**
* 保存用户按返回键的时间
*/
@@ -184,18 +185,14 @@ public void onClick(View view) {
//下拉加载更多
getBinding().homeRefreshlayout.setEnableRefresh(false);
getBinding().homeRefreshlayout.setEnableLoadMore(true);
- getBinding().homeRefreshlayout.setRefreshFooter(new ClassicsFooter(this));
getBinding().homeRefreshlayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
if (isHasMore && checkList.size() != 0) {
presenter.getPersonalVideoList(cursor);
- refreshLayout.finishLoadMore(true);
} else {
- refreshLayout.finishLoadMore(true);
- refreshLayout.setEnableLoadMore(false);
- getBinding().homeRecyclerviewFooter.setVisibility(View.VISIBLE);
+ refreshLayout.finishLoadMoreWithNoMoreData();
}
}
});
@@ -297,16 +294,20 @@ public void showPersonalInfo(UserInfo userInfo) {
public void showPersonalVideo(List videos, boolean isHasMore, long cursor) {
this.isHasMore = isHasMore;
this.cursor = cursor;
- HomeAdapter adapter = new HomeAdapter(R.layout.reycylerview_item_home, list);
- adapter.addChildClickViewIds(R.id.home_item_imageView);
- adapter.setAnimationEnable(true);
- adapter.setAnimationFirstOnly(true);
- adapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.SlideInBottom);
-
- //recyclerview初始化
- getBinding().recyclerViewHome.addItemDecoration(new HomeItemDecoration(120, 5, 5, 5));
- getBinding().recyclerViewHome.setLayoutManager(new GridLayoutManager(this, 3));
- getBinding().recyclerViewHome.setAdapter(adapter);
+ // TODO: 2022/11/21 改为不得重复创建
+ if (adapter == null){
+ adapter = new HomeAdapter(R.layout.reycylerview_item_home, list);
+ adapter.addChildClickViewIds(R.id.home_item_imageView);
+ adapter.setAnimationEnable(true);
+ adapter.setAnimationFirstOnly(true);
+ adapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.SlideInBottom);
+
+ //recyclerview初始化
+ getBinding().recyclerViewHome.addItemDecoration(new HomeItemDecoration(120, 5, 5, 5));
+ getBinding().recyclerViewHome.setLayoutManager(new GridLayoutManager(this, 3));
+ getBinding().recyclerViewHome.setAdapter(adapter);
+ }
+
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter, ?> adapter, @NonNull View view, int position) {
@@ -316,6 +317,7 @@ public void onItemClick(@NonNull BaseQuickAdapter, ?> adapter, @NonNull View v
startActivity(intent);
}
});
+
if (videos != null) {
for (int i = 0; i < videos.size(); i++) {
checkList.clear();
@@ -332,7 +334,7 @@ public void onItemClick(@NonNull BaseQuickAdapter, ?> adapter, @NonNull View v
getBinding().homeTextViewLike.setText(like+getString(R.string.likes));
}
-
+ getBinding().homeRefreshlayout.finishLoadMore(true);
}
diff --git a/app/src/main/java/com/qxy/potatos/module/home/presenter/HomePresenter.java b/app/src/main/java/com/qxy/potatos/module/home/presenter/HomePresenter.java
index 8e5e385..19bdd11 100644
--- a/app/src/main/java/com/qxy/potatos/module/home/presenter/HomePresenter.java
+++ b/app/src/main/java/com/qxy/potatos/module/home/presenter/HomePresenter.java
@@ -74,7 +74,7 @@ public void getPersonalVideoList(long cursor) {
HashMap map = new HashMap<>();
map.put(MyUtil.getString(R.string.cursor), cursor);
map.put(MyUtil.getString(R.string.count), (long) 12);
- addDisposable(apiServer.GetMyVideos(access_token, openId, map), new BaseObserver>(baseView, true) {
+ addDisposable(apiServer.GetMyVideos(access_token, openId, map), new BaseObserver>(baseView, false) {
@Override
public void onError(String msg) {
diff --git a/app/src/main/java/com/qxy/potatos/module/mine/activity/LoginActivity.java b/app/src/main/java/com/qxy/potatos/module/mine/activity/LoginActivity.java
index a3eaee6..e38c898 100644
--- a/app/src/main/java/com/qxy/potatos/module/mine/activity/LoginActivity.java
+++ b/app/src/main/java/com/qxy/potatos/module/mine/activity/LoginActivity.java
@@ -139,11 +139,12 @@ public void onBackPressed() {
@Override
public void onReq(BaseReq baseReq) {
-
+ LogUtil.d("onReq");
}
@Override
public void onResp(BaseResp baseResp) {
+ LogUtil.d("onResp");
if (baseResp.getType() == CommonConstants.ModeType.SEND_AUTH_RESPONSE) {
Authorization.Response response = (Authorization.Response) baseResp;
if (baseResp.isSuccess()) {
@@ -157,6 +158,6 @@ public void onResp(BaseResp baseResp) {
@Override
public void onErrorIntent(Intent intent) {
-
+ LogUtil.d("onErrorIntent");
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/qxy/potatos/module/videorank/activity/RankActivity.java b/app/src/main/java/com/qxy/potatos/module/videorank/activity/RankActivity.java
index 1e98a93..46c969d 100644
--- a/app/src/main/java/com/qxy/potatos/module/videorank/activity/RankActivity.java
+++ b/app/src/main/java/com/qxy/potatos/module/videorank/activity/RankActivity.java
@@ -1,5 +1,13 @@
package com.qxy.potatos.module.videorank.activity;
+import android.app.Activity;
+import android.content.res.Resources;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.ColorRes;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
@@ -7,6 +15,7 @@
import com.bumptech.glide.Glide;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
+import com.qxy.potatos.R;
import com.qxy.potatos.annotation.InitAIHand;
import com.qxy.potatos.base.BaseActivity;
import com.qxy.potatos.databinding.ActivityVideoRankBinding;
@@ -14,6 +23,10 @@
import com.qxy.potatos.module.videorank.fragment.VideoRankFragment;
import com.qxy.potatos.module.videorank.presenter.RankPresenter;
import com.qxy.potatos.module.videorank.view.IRankView;
+import com.qxy.potatos.util.ActivityUtil;
+import com.qxy.potatos.util.ColorUtil;
+import com.qxy.potatos.util.LogUtil;
+import com.qxy.potatos.util.MyUtil;
import java.util.ArrayList;
import java.util.List;
@@ -21,7 +34,7 @@
@InitAIHand
public class RankActivity extends BaseActivity implements IRankView {
private final String[] tabText = {"电影榜", "电视剧榜", "综艺榜"};
-
+ private final Activity activity = ActivityUtil.getCurrentActivity();
/**
* 初始化presenter,也是与Activity的绑定
@@ -71,9 +84,58 @@ private void showView() {
new TabLayoutMediator(getBinding().tabLayout, getBinding().viewPager2, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
- tab.setText(tabText[position]);
+ TextView textView = new TextView(activity);
+ textView.setGravity(Gravity.CENTER_HORIZONTAL);
+ textView.setText(tabText[position]);
+ tab.setCustomView(textView);
}
}).attach();
+ getBinding().viewPager2.registerOnPageChangeCallback(changeCallback);
+ getBinding().tabLayout.addOnTabSelectedListener(selectedListener);
+
}
+
+
+ //根据标签选中与否更改文本效果
+ private TabLayout.OnTabSelectedListener selectedListener = new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ if (tab.getCustomView() != null) {
+ TextView textView = (TextView) tab.getCustomView();
+ textView.setTextAppearance(activity, R.style.selected_tab_text);
+ }
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+ if (tab.getCustomView() != null) {
+ TextView textView = (TextView) tab.getCustomView();
+ textView.setTextAppearance(activity, R.style.unselected_tab_text);
+ }
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+
+ }
+ };
+ //根据页面切换与否更改文本效果
+ private ViewPager2.OnPageChangeCallback changeCallback = new ViewPager2.OnPageChangeCallback() {
+ @Override
+ public void onPageSelected(int position) {
+ int tabCount = getBinding().tabLayout.getTabCount();
+ for (int i = 0; i < tabCount; i++) {
+ TabLayout.Tab tab = getBinding().tabLayout.getTabAt(i);
+ TextView textView = (TextView) tab.getCustomView();
+ if (textView != null) {
+ if (tab.getPosition() == position) {
+ textView.setTextAppearance(activity, R.style.selected_tab_text);
+ } else {
+ textView.setTextAppearance(activity, R.style.unselected_tab_text);
+ }
+ }
+ }
+ }
+ };
}
\ No newline at end of file
diff --git a/app/src/main/java/com/qxy/potatos/module/videorank/adapter/MyItemDecoration.java b/app/src/main/java/com/qxy/potatos/module/videorank/adapter/MyItemDecoration.java
index 3cdafa8..798c46d 100644
--- a/app/src/main/java/com/qxy/potatos/module/videorank/adapter/MyItemDecoration.java
+++ b/app/src/main/java/com/qxy/potatos/module/videorank/adapter/MyItemDecoration.java
@@ -12,6 +12,7 @@
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
+import com.qxy.potatos.R;
/**
* @author yinxiaolong
@@ -37,12 +38,9 @@ public MyItemDecoration(Context context) {
textPaint.setColor(Color.parseColor("#a64936"));
//paint.setColor(Color.parseColor("#ffff00"));
- Shader shader = new LinearGradient(0, 0, 100, 1000, Color.parseColor("#fff9e6"), Color.parseColor("#fec002"), Shader.TileMode.CLAMP);
- paint.setShader(shader);
- paint.setAntiAlias(true);
+
linePaint.setColor(Color.BLACK);
linePaint.setAntiAlias(true);
- paint.setAntiAlias(true);
textPaint.setAntiAlias(true);
textPaint.setTextSize(50);
}
@@ -79,7 +77,14 @@ public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull
final View child = parent.getChildAt(i);
int position = parent.getChildAdapterPosition(child);
parent.getDecoratedBoundsWithMargins(child, mBounds);
- c.drawRoundRect(mBounds.left + 48, mBounds.top + 10, mBounds.left + 170, mBounds.top + 70, 10, 10, paint);
+ int left = mBounds.left + 48;
+ int top = mBounds.top + 10;
+ int right = mBounds.left + 170;
+ int bottom = mBounds.top + 70;
+ LinearGradient shader = new LinearGradient(left, top, right, bottom, Color.parseColor("#fff9e6"), Color.parseColor("#fec002"), Shader.TileMode.CLAMP);
+ paint.setShader(shader);
+ paint.setAntiAlias(true);
+ c.drawRoundRect(left, top, right, bottom, 10, 10, paint);
if (position < 3) {
c.drawText("TOP" + (position + 1) + "", mBounds.left + 48, mBounds.top + 60, textPaint);
} else {
diff --git a/app/src/main/java/com/qxy/potatos/module/videorank/fragment/VideoRankFragment.java b/app/src/main/java/com/qxy/potatos/module/videorank/fragment/VideoRankFragment.java
index b25a197..fb16220 100644
--- a/app/src/main/java/com/qxy/potatos/module/videorank/fragment/VideoRankFragment.java
+++ b/app/src/main/java/com/qxy/potatos/module/videorank/fragment/VideoRankFragment.java
@@ -3,6 +3,7 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import com.chad.library.adapter.base.BaseQuickAdapter;
import com.qxy.potatos.R;
import com.qxy.potatos.annotation.BindEventBus;
import com.qxy.potatos.base.BaseEvent;
@@ -91,6 +92,9 @@ public void showRankSuccess(VideoList videoList, int version) {
itemDialog.show(getActivity().getSupportFragmentManager(), "MyFullDialog");
}
});
+ //由于此处父布局是NSV,所以无法获得真正的高度,那么加载动画也只在第一次有效
+ rvAdapter.setAnimationFirstOnly(true);
+ rvAdapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.ScaleIn);
getBinding().recyclerview.setLayoutManager(new LinearLayoutManager(requireContext(),
RecyclerView.VERTICAL, false));
getBinding().recyclerview.addItemDecoration(new MyItemDecoration(getContext()));
@@ -119,7 +123,7 @@ public void showRankFailed(String errorMsg) {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMainActivityEvent(BaseEvent event) {
- if (event.getEventCode() == EventCode.SELECT_VERSION) {
+ if (event.getEventCode() == EventCode.SELECT_VERSION && event.getData().getType() == type) {
presenter.getLastVersionRank(type, event.getData().getVersion());
}
}
diff --git a/app/src/main/java/com/qxy/potatos/module/videorank/myview/NestedScrollViewVP.java b/app/src/main/java/com/qxy/potatos/module/videorank/myview/NestedScrollViewVP.java
index ab033c1..219ed4e 100644
--- a/app/src/main/java/com/qxy/potatos/module/videorank/myview/NestedScrollViewVP.java
+++ b/app/src/main/java/com/qxy/potatos/module/videorank/myview/NestedScrollViewVP.java
@@ -51,8 +51,8 @@ public boolean dispatchTouchEvent(MotionEvent ev) {
int disY = endY - startY;
//角度正确,则让上层view别拦截我的事件
float r = (float)Math.abs(disY)/Math.abs(disX);
- getParent().requestDisallowInterceptTouchEvent(r > 0.6f || isDisallowIntercept);
if (r > 0.6f) isDisallowIntercept = true;
+ getParent().requestDisallowInterceptTouchEvent(isDisallowIntercept);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
diff --git a/app/src/main/java/com/qxy/potatos/module/videorank/myview/RecycleViewVp.java b/app/src/main/java/com/qxy/potatos/module/videorank/myview/RecycleViewVp.java
index 4ed34c3..4771da7 100644
--- a/app/src/main/java/com/qxy/potatos/module/videorank/myview/RecycleViewVp.java
+++ b/app/src/main/java/com/qxy/potatos/module/videorank/myview/RecycleViewVp.java
@@ -53,8 +53,8 @@ public boolean dispatchTouchEvent(MotionEvent ev) {
int disY = endY - startY;
//角度正确,则让上层view别拦截我的事件
float r = (float)Math.abs(disY)/Math.abs(disX);
- getParent().requestDisallowInterceptTouchEvent(r > 0.6f || isDisallowIntercept);
if (r > 0.6f) isDisallowIntercept = true;
+ getParent().requestDisallowInterceptTouchEvent(isDisallowIntercept);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
diff --git a/app/src/main/java/com/qxy/potatos/module/videorank/presenter/VideoRankPresenter.java b/app/src/main/java/com/qxy/potatos/module/videorank/presenter/VideoRankPresenter.java
index 308cf5b..68246e1 100644
--- a/app/src/main/java/com/qxy/potatos/module/videorank/presenter/VideoRankPresenter.java
+++ b/app/src/main/java/com/qxy/potatos/module/videorank/presenter/VideoRankPresenter.java
@@ -42,7 +42,7 @@ public void getNowRank(int type) {
if (MMKV.defaultMMKV().decodeBool(GlobalConstant.IS_CLIENT, true)) {
String token = MMKV.defaultMMKV().decodeString(GlobalConstant.CLIENT_TOKEN);
LogUtil.i(token);
- addDisposable(apiServer.GetVideoListNow(type, token), new BaseObserver>(baseView, true) {
+ addDisposable(apiServer.GetVideoListNow(type, token), new BaseObserver>(baseView, false) {
@Override
public void onError(String msg) {
LogUtil.d("获取最近榜单错误信息:" + msg);
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index 20166b0..513c884 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -107,6 +107,7 @@
+
+
+ android:orientation="horizontal">
+
-
-
-
+
-
+
+
-
+
diff --git a/app/src/main/res/layout/activity_video_rank.xml b/app/src/main/res/layout/activity_video_rank.xml
index ab38547..7a474bb 100644
--- a/app/src/main/res/layout/activity_video_rank.xml
+++ b/app/src/main/res/layout/activity_video_rank.xml
@@ -47,6 +47,8 @@
app:tabGravity="fill"
app:tabIndicatorFullWidth="false"
app:tabMode="fixed"
+ app:tabRippleColor="@android:color/transparent"
+ app:tabTextAppearance="@style/unselected_tab_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
diff --git a/app/src/main/res/layout/relativelayout_mine_follow.xml b/app/src/main/res/layout/relativelayout_mine_follow.xml
index a03faaa..4d0edc1 100644
--- a/app/src/main/res/layout/relativelayout_mine_follow.xml
+++ b/app/src/main/res/layout/relativelayout_mine_follow.xml
@@ -1,52 +1,52 @@
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/fragment_mine_follow_followers"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".module.Follow.activity.FollowActivity">
+ android:id="@+id/imagebutton_mine_back"
+ android:layout_width="27dp"
+ android:layout_height="27dp"
+ android:layout_marginStart="19dp"
+ android:layout_marginTop="20dp"
+ android:background="#00000000"
+ android:scaleType="fitXY"
+ android:src="@mipmap/back" />
+ android:id="@+id/tablelayout_mine"
+ android:layout_width="229dp"
+ android:layout_height="41dp"
+ android:layout_centerHorizontal="true"
+ android:layout_marginTop="17dp"
+ app:tabIndicator="@drawable/tablayout_follow_indicator"
+ app:tabIndicatorAnimationDuration="1000"
+ app:tabIndicatorColor="#1A1A1A"
+ app:tabIndicatorHeight="0dp"
+ app:tabRippleColor="@android:color/transparent"
+ app:tabSelectedTextColor="#1A1A1A"
+ app:tabTextAppearance="@style/unselected_tab_text">
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" />
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" />
+ android:id="@+id/view_mine_line"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:layout_below="@id/tablelayout_mine"
+ android:background="#E4E4E4" />
- aw72owx7fdi4mhgp
- db04c6989b2777b21a8bfd999e95aa4c
+ awtunk00suxwv3qd
+ 47b6a359c11554b3d377010f9f1cbbb5
8b4b6b21efed31323e2dc4bf07268d7f
kvq0nvszkwmqqqbh
N0V3S20vM0lCd1dzZkZJWFpaalRkdz09