Skip to content

Commit

Permalink
1、修复 LabelFlowLayout 选中第一个不生效的问题
Browse files Browse the repository at this point in the history
2、TabFlowLayout 去掉 setViewPager(x,x,..)方法,全部改成链式调用,方便客制化
  • Loading branch information
Zzhengsr committed Feb 14, 2020
1 parent 90c0fd9 commit 27aa2bb
Show file tree
Hide file tree
Showing 11 changed files with 165 additions and 75 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ allprojects {
```

```
implementation 'com.github.LillteZheng:FlowHelper:v1.19'
implementation 'com.github.LillteZheng:FlowHelper:v1.20'
```

**如果要支持 AndroidX ,如果你的工程已经有以下代码,直接关联即可:**
Expand Down
29 changes: 13 additions & 16 deletions TAB_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,29 +170,26 @@ private void rectFlow(){
```


### 3.1.1、结合Viewpager
### 3.1.1、结合Viewpager 以及一些常用配置
结合 ViewPager 非常简单,如下:
```
flowLayout.setViewPager(...) 即可.
flowLayout.setViewPager(viewpager) .
```

它有几个方法,参考这个解释就可以了。
如果您想要配置默认位置,或者 TextView 的颜色变化,可以参考以下设置,支持链式调用 :
```
/**
* 配置viewpager
* @param viewPager
* @param textId view 中 textview 的id,用于TextView的颜色变化
* @param selectedIndex 默认选中的item,初始值为0,也可以从第二页或者其他 位置
* @param unselectedColor 没有选中的颜色,如果为 TabColorTextView 不需要些这个
* @param selectedColor 选中的颜色,如果为 TabColorTextView 不需要些这个
* @ setViewPager 设置 viewpager
* @ setTextId view 中 textview 的id,用于TextView的颜色变化
* @ setDefaultPosition 默认选中的item,初始值为0,也可以从第二页或者其他 位置
* @ setSelectedColor //选中的颜色,如果为 TabColorTextView 不需要些这个
* @ setUnSelectedColor //没有选中的颜色,如果为 TabColorTextView 不需要些这个
*/
public void setViewPager(
ViewPager viewPager,
int textId,
int selectedIndex,
int unselectedColor,
int selectedColor) {}
flowLayout.setViewPager(mViewPager)
.setTextId(R.id.item_text)
.setSelectedColor(Color.WHITE)
.setUnSelectedColor(getResources().getColor(R.color.unselect))
.setDefaultPosition(2);
```

**为了避免卡顿,当viewpager结合fragment时,可以有以下优化手段:**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ protected void onCreate(Bundle savedInstanceState) {
singleFlow();
searchFlow();
multiFlow();
canLongFlow();
canLongFlow();
}

private void singleFlow(){
Expand Down Expand Up @@ -58,7 +58,7 @@ public void onClick(View view) {
}
});

flowLayout.setSelects(6);
// flowLayout.setSelects(6);

}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.zhengsr.tabhelper.activity;

import android.annotation.SuppressLint;
import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
Expand Down Expand Up @@ -46,7 +45,9 @@ protected void onCreate(Bundle savedInstanceState) {


final TabFlowAdapter adapter ;
flowLayout.setViewPager(mViewPager,R.id.item_text);
flowLayout.setViewPager(mViewPager)
.setTextId(R.id.item_text)
.setDefaultPosition(2);
flowLayout.setAdapter(adapter = new TabFlowAdapter<String>(R.layout.item_tab,titles) {

@Override
Expand All @@ -57,10 +58,9 @@ public void bindView(View view, String data, int position) {
@Override
public void onItemClick(View view, String data, int position) {
super.onItemClick(view, data, position);
// mViewPager.setCurrentItem(position,false);
//flowLayout.setItemAnim(position);
mViewPager.setCurrentItem(position);
}

});


Expand Down
23 changes: 18 additions & 5 deletions app/src/main/java/com/zhengsr/tabhelper/activity/TabActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ protected void onCreate(Bundle savedInstanceState) {

private void rectFlow(){
final TabFlowLayout flowLayout = findViewById(R.id.rectflow);
flowLayout.setViewPager(mViewPager,R.id.item_text,getResources().getColor(R.color.unselect),Color.WHITE);
// flowLayout.setViewPager(mViewPager,R.id.item_text,getResources().getColor(R.color.unselect),Color.WHITE);
flowLayout.setViewPager(mViewPager)
.setTextId(R.id.item_text)
.setSelectedColor(Color.WHITE)
.setUnSelectedColor(getResources().getColor(R.color.unselect));
flowLayout.setAdapter(new TabFlowAdapter<String>(R.layout.item_msg,mTitle) {
@Override
public void bindView(View view, String data, int position) {
Expand All @@ -69,7 +73,11 @@ public void onItemClick(View view, String data, int position) {


TabFlowLayout flowLayout2 = findViewById(R.id.rectflow2);
flowLayout2.setViewPager(mViewPager,R.id.item_text,getResources().getColor(R.color.unselect),Color.WHITE);
// flowLayout2.setViewPager(mViewPager,R.id.item_text,getResources().getColor(R.color.unselect),Color.WHITE);
flowLayout2.setViewPager(mViewPager)
.setTextId(R.id.item_text)
.setSelectedColor(Color.WHITE)
.setUnSelectedColor(getResources().getColor(R.color.unselect));
flowLayout2.setAdapter(new TabFlowAdapter<String>(R.layout.item_msg,mTitle) {
@Override
public void bindView(View view, String data, int position) {
Expand All @@ -91,7 +99,8 @@ public void onItemClick(View view, String data, int position) {

private void triFlow(){
TabFlowLayout flowLayout = findViewById(R.id.triflow);
flowLayout.setViewPager(mViewPager,R.id.item_text);
flowLayout.setViewPager(mViewPager)
.setTextId(R.id.item_text);
flowLayout.setAdapter(new TabFlowAdapter<String>(R.layout.item_msg,mTitle) {
@Override
public void bindView(View view, String data, int position) {
Expand All @@ -107,7 +116,10 @@ public void onItemClick(View view, String data, int position) {
}
private void roundFlow(){
TabFlowLayout flowLayout = findViewById(R.id.roundflow);
flowLayout.setViewPager(mViewPager,R.id.item_text,getResources().getColor(R.color.unselect),Color.WHITE);
flowLayout.setViewPager(mViewPager)
.setTextId(R.id.item_text)
.setSelectedColor(Color.WHITE)
.setUnSelectedColor(getResources().getColor(R.color.unselect));
flowLayout.setAdapter(new TabFlowAdapter<String>(R.layout.item_msg,mTitle) {
@Override
public void bindView(View view, String data, int position) {
Expand Down Expand Up @@ -157,7 +169,8 @@ public void onItemClick(View view, String data, int position) {

private void colorFlow(){
TabFlowLayout flowLayout = findViewById(R.id.colorflow);
flowLayout.setViewPager(mViewPager,R.id.item_text,getResources().getColor(R.color.unselect),Color.RED);
flowLayout.setViewPager(mViewPager)
.setTextId(R.id.item_text);
flowLayout.setAdapter(new TabFlowAdapter<String>(R.layout.item_color_msg,mTitle) {
@Override
public void bindView(View view, String data, int position) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ protected void onCreate(Bundle savedInstanceState) {

private void rectFlow(){
TabFlowLayout flowLayout = findViewById(R.id.rectflow);
flowLayout.setDefaultPosition(2);
flowLayout.setAdapter(new TabFlowAdapter<String>(R.layout.item_msg,mTitle) {
@Override
public void onItemSelectState(View view, boolean isSelected) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;

import com.chad.library.adapter.base.BaseQuickAdapter;
Expand Down Expand Up @@ -135,7 +134,7 @@ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newStat

int firstPosition = mManager.findFirstVisibleItemPosition();
if (!mTabFlowLayout.isItemClick()) {
mTabFlowLayout.setItemSelected(firstPosition);
mTabFlowLayout.setItemClickByOutSet(firstPosition);
mTabFlowLayout.setItemClickStatus(true);
}else{
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,23 +114,42 @@ public void config(TabFlowLayout parentView) {
}

/**
* 设置 viewpager 的点击选中颜色效果
* 设置 viewpager
*
* @param viewPager
* @param textId
* @param unselectedColor
* @param selectedColor
*/
public void setViewPager(final ViewPager viewPager, int textId, int unselectedColor, int selectedColor) {
public BaseAction setViewPager(final ViewPager viewPager) {
mViewPager = viewPager;
viewPager.addOnPageChangeListener(null);
viewPager.addOnPageChangeListener(this);
mTextViewId = textId;
mUnSelectedColor = unselectedColor;
mSelectedColor = selectedColor;
return this;

}

/**
* 设置textview 的id ,不然颜色不起作用
* @param textId
*/
public BaseAction setTextId(int textId){
mTextViewId = textId;
return this;
}

/**
* 设置选中颜色,在 TabTextColorView 不起作用
* @param selectedColor
*/
public BaseAction setSelectedColor(int selectedColor) {
this.mSelectedColor = selectedColor;
return this;
}
/**
* 设置默认颜色,在 TabTextColorView 不起作用
* @param unSelectedColor
*/
public BaseAction setUnSelectedColor(int unSelectedColor) {
this.mUnSelectedColor = unSelectedColor;
return this;
}

/**
* 点击事件
Expand Down Expand Up @@ -619,4 +638,6 @@ public boolean isLeftAction(){
public boolean isRightAction(){
return mActionOrientation != -1 && mActionOrientation == FlowConstants.RIGHT;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ public void resetAllColor(int viewId, int color) {
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class LabelFlowLayout extends ScrollFlowLayout {
private static final String TAG = "LabelFlowLayout";
private LabelFlowAdapter mAdapter;
private int mMaxSelectCount;
private int mLastPosition = 0;
private int mLastPosition = -1;
/**
* attrs
*/
Expand Down
Loading

0 comments on commit 27aa2bb

Please sign in to comment.