FlowLayout标签流单选/多选布局

转载请注明出处:FlowLayout标签流布局_flowlayout布局_Mr_Leixiansheng的博客-CSDN博客

话不多说先上图

   

偷懒引用了三方库,啊哈哈,代码如下

布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:zhy="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.zhy.view.flowlayout.TagFlowLayout
        android:id="@+id/id_flowlayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="20dp"
        zhy:max_select="-1"
        >
    </com.zhy.view.flowlayout.TagFlowLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="5dp"
          android:background="@drawable/tag_bg"
          android:text="Helloworld"
          android:textColor="@drawable/text_color">
</TextView>

backgroubd、textColor自己设置,就是选择一个颜色,不选择则另一个颜色。在此就不贴出了

Main

package com.example.leixiansheng.flowlayout;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.zhy.view.flowlayout.FlowLayout;
import com.zhy.view.flowlayout.TagAdapter;
import com.zhy.view.flowlayout.TagFlowLayout;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class MainActivity extends AppCompatActivity {

	private String[] mVals = new String[]
			{"Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
					"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
					"Android", "Weclome Hello", "Button Text", "TextView"};

	private TagFlowLayout mFlowLayout;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mFlowLayout = (TagFlowLayout) findViewById(R.id.id_flowlayout);
		//mFlowLayout.setMaxSelectCount(3);		//设置最大选择条数
		mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
		{

			@Override
			public View getView(FlowLayout parent, int position, String s)
			{
				TextView tv = (TextView) LayoutInflater.from(MainActivity.this).inflate(R.layout.tv,
						mFlowLayout, false);
				tv.setText(s);
				return tv;
			}

			/**
			 * 设置被选择项
			 * @param position
			 * @param s
			 * @return
			 */
			@Override
			public boolean setSelected(int position, String s)
			{
				return s.equals("Android");	// 等于 Android 字段的标签默认选中
			}
		});

		/**
		 * 标签点击响应
		 */
		mFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener()
		{
			@Override
			public boolean onTagClick(View view, int position, FlowLayout parent)
			{
				Toast.makeText(MainActivity.this, mVals[position], Toast.LENGTH_SHORT).show();
				//view.setVisibility(View.GONE);
				return true;
			}
		});

		/**
		 *  被选中标签位置集合
		 */
		mFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener()
		{
			@Override
			public void onSelected(Set<Integer> selectPosSet)
			{
				setTitle("choose:" + selectPosSet.toString());

				setSelectedList(selectPosSet);
			}
		});
	}

	private void setSelectedList(Set<Integer> selectPosSet) {
		List<String> tagList = new ArrayList<String>();
		Iterator it = selectPosSet.iterator();
		while (it.hasNext()) {
			tagList.add(mVals[(int)it.next()]);
		}
		Log.i("MainActivity", tagList.toString());
	}
}

打印Log如下

07-05 11:05:01.382 22522-22522/com.example.leixiansheng.flowlayout D/zhy: onSelected 3
07-05 11:05:01.385 22522-22522/com.example.leixiansheng.flowlayout I/MainActivity: [Button]
07-05 11:05:02.745 22522-22522/com.example.leixiansheng.flowlayout D/zhy: onSelected 4
07-05 11:05:02.749 22522-22522/com.example.leixiansheng.flowlayout I/MainActivity: [Button, TextView]
07-05 11:05:03.738 22522-22522/com.example.leixiansheng.flowlayout D/zhy: onSelected 8
07-05 11:05:03.740 22522-22522/com.example.leixiansheng.flowlayout I/MainActivity: [Button ImageView, Button, TextView]

参考与:GitHub - hongyangAndroid/FlowLayout: [不再维护]Android流式布局,支持单选、多选等,适合用于产品标签等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值