1、功能实现所需jar
implementation 'com.hyman:flowlayout-lib:1.1.2'
implementation 'com.android.support:design:27.1.1'
核心代码类
public class EvaluationWidgetView extends LinearLayout {
private Context mContext;
private TagFlowLayout mTagFlowLayout;
private EditText mTagInputEt;
private TabLayout mTabLayout;
private int tabIndexDefault=1;
private List mList;
private HashMap> selectList=new HashMap();
private boolean tagInputState=false;
public EvaluationWidgetView(Context context) {
super(context);
mContext = context;
initView();
}
public EvaluationWidgetView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mContext = context;
initView();
}
public EvaluationWidgetView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
initView();
}
private void initView() {
LayoutInflater mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = mLayoutInflater.inflate(R.layout.evaluation_widget_view_layout, this, false);
addView(view);
mTabLayout = view.findViewById(R.id.tab_layout);
mTabLayout.setTabMode(TabLayout.MODE_FIXED);
mTabLayout.setSelectedTabIndicatorHeight(0);
ViewCompat.setElevation(mTabLayout, 10);
mTagFlowLayout = view.findViewById(R.id.tag_flow_layout);
mTagInputEt = view.findViewById(R.id.tag_input_et);
mTagFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {
@Override
public void onSelected(Set selectPosSet) {
int pos=mTagFlowLayout.getAdapter().getCount()-1;
boolean b=selectPosSet.contains(pos);
selectList.put(tabIndexDefault,selectPosSet);
if(b){
tagInputState=true;
}else {
tagInputState=false;
}
setTagInput();
}
});
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// setTagViewVisibleGone(tab.getPosition());
TextView textView=tab.getCustomView().findViewById(R.id.tab_e_tv);
textView.setTextColor(mContext.getResources().getColor(R.color.dark_orange));
tabIndexDefault=tab.getPosition();
setData();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
TextView textView=tab.getCustomView().findViewById(R.id.tab_e_tv);
textView.setTextColor(mContext.getResources().getColor(R.color.color_999999));
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void setTagInput(){
mTagInputEt.setVisibility(tagInputState?View.VISIBLE:View.GONE);
}
public void setViewData(List datas){
if(datas!=null&&datas.size()>0){
// Gson gson=new Gson();
// Log.d("dlh", "---------------->"+gson.toJson(datas));
mList=datas;
}else {
mList=new ArrayList();
}
initTagFlow();
}
private void setData(){
if(tabIndexDefault>=0&&tabIndexDefault=0&&tabIndexDefault());
setTagFlowData(mTagFlowLayout, mList.get(tabIndexDefault).getList());
}
}
private void setTagFlowData(TagFlowLayout tag,List strings){
TagAdapter tagAdapter = new TagAdapter(strings) {
@Override
public View getView(FlowLayout parent, int position, String o) {
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView tv = (TextView) layoutInflater.inflate(R.layout.tv,
parent, false);
tv.setText(o);
return tv;
}
@Override
public void onSelected(int position, View view) {
super.onSelected(position, view);
}
@Override
public void unSelected(int position, View view) {
super.unSelected(position, view);
}
};
if(selectList.get(tabIndexDefault)!=null&&selectList.get(tabIndexDefault).size()>0){
tagAdapter.setSelectedList(selectList.get(tabIndexDefault));
}else if(tagInputState){
tagAdapter.setSelectedList(tagAdapter.getCount()-1);
}
tag.setAdapter(tagAdapter);
}
public EvaluationGroupBean getSelectData(){
EvaluationGroupBean m=new EvaluationGroupBean();
Set integerSet= mTagFlowLayout.getSelectedList();
EvaluationGroupBean temp=mList.get(tabIndexDefault);
List selectItemStrings=new ArrayList();
Iterator it = integerSet.iterator();
while (it.hasNext()) {
String item= temp.getList().get(it.next());
selectItemStrings.add(item);
}
if(tagInputState){
selectItemStrings.remove(selectItemStrings.size()-1);
}
m.setGroupTitle(temp.getGroupTitle());
m.setList(selectItemStrings);
return m;
}
public String getTagInputText(){
String inputString=null;
if(tagInputState){
inputString = mTagInputEt.getText().toString();
}
return inputString;
}
private View getTabTopIconBottomTextView(int resIcon,int resText){
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = layoutInflater.inflate(R.layout.tab_top_icon_bottom_text_view_layout,null);
ImageView imageView=itemView.findViewById(R.id.tab_e_iv);
imageView.setImageResource(resIcon);
TextView textView=itemView.findViewById(R.id.tab_e_tv);
textView.setText(resText);
return itemView;
}
所有需要布局文件
R.layout.evaluation_widget_view_layout
R.layout.tab_top_icon_bottom_text_view_layout
R.layout.tv
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2872/viewspace-2806135/ ,如需转载,请注明出处,否则将追究法律责任。