{"id":13643066,"url":"https://github.com/hongyangAndroid/FlowLayout","last_synced_at":"2025-04-20T21:32:44.919Z","repository":{"id":37444708,"uuid":"41539051","full_name":"hongyangAndroid/FlowLayout","owner":"hongyangAndroid","description":"[不再维护]Android流式布局，支持单选、多选等，适合用于产品标签等。","archived":false,"fork":false,"pushed_at":"2019-10-13T14:59:04.000Z","size":910,"stargazers_count":5598,"open_issues_count":115,"forks_count":1162,"subscribers_count":137,"default_branch":"master","last_synced_at":"2024-11-09T14:40:49.484Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hongyangAndroid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-28T09:32:31.000Z","updated_at":"2024-11-07T11:25:54.000Z","dependencies_parsed_at":"2022-07-12T13:34:12.823Z","dependency_job_id":null,"html_url":"https://github.com/hongyangAndroid/FlowLayout","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hongyangAndroid%2FFlowLayout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hongyangAndroid%2FFlowLayout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hongyangAndroid%2FFlowLayout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hongyangAndroid%2FFlowLayout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hongyangAndroid","download_url":"https://codeload.github.com/hongyangAndroid/FlowLayout/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249965547,"owners_count":21352925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:01:40.725Z","updated_at":"2025-04-20T21:32:44.494Z","avatar_url":"https://github.com/hongyangAndroid.png","language":"Java","readme":"[![Android Gems](http://www.android-gems.com/badge/hongyangAndroid/FlowLayout.svg?branch=master)](http://www.android-gems.com/lib/hongyangAndroid/FlowLayout)\n\n# FlowLayout\nAndroid流式布局，支持单选、多选等，适合用于产品标签等。\n\n\n##特色\n* 以setAdapter形式注入数据\n* 直接设置selector为background即可完成标签选则的切换，类似CheckBox\n* 支持控制选择的Tag数量，比如：单选、多选\n* 支持setOnTagClickListener，当点击某个Tag回调\n* 支持setOnSelectListener，当选择某个Tag后回调\n* 支持adapter.notifyDataChanged\n* Activity重建（或者旋转）后，选择的状态自动保存\n\n##效果图\n\n\u003cimg src=\"flowlayout_03.gif\" width=\"320px\"/\u003e\n\n\u003cimg src=\"sc.png\" width=\"320px\"/\u003e\n\n## 用法\n\n```java\ndependencies {\n compile 'com.hyman:flowlayout-lib:1.1.2'\n}\n```\n\n### 声明\n布局文件中声明：\n\n```java\n \u003ccom.zhy.view.flowlayout.TagFlowLayout\n        android:id=\"@+id/id_flowlayout\"\n        zhy:max_select=\"-1\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:padding=\"20dp\"\u003e\n    \u003c/com.zhy.view.flowlayout.TagFlowLayout\u003e\n```\n\n支持属性：\n\n`max_select`：-1为不限制选择数量，\u003e=1的数字为控制选择tag的数量\n\n支持通过state=checked来控制选中和取消,也可以自己在Adapter\n的onSelected和unSelected中分别处理显示。\n\n###设置数据\n\n```java\nmFlowLayout.setAdapter(new TagAdapter\u003cString\u003e(mVals)\n   {\n       @Override\n       public View getView(FlowLayout parent, int position, String s)\n       {\n           TextView tv = (TextView) mInflater.inflate(R.layout.tv,\n                   mFlowLayout, false);\n           tv.setText(s);\n           return tv;\n       }\n   });\n```\n\n\ngetView中回调，类似ListView等用法。\n\n### 对于选中状态\n\n```java\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\"\u003e\n    \u003citem android:color=\"@color/tag_select_textcolor\"\n          android:drawable=\"@drawable/checked_bg\"\n          android:state_checked=\"true\"\u003e\u003c/item\u003e\n    \u003citem android:drawable=\"@drawable/normal_bg\"\u003e\u003c/item\u003e\n\u003c/selector\u003e\n\n```\n\n设置个background，上面一个状态为android:state_checked，另一个为正常。写写布局文件我都嫌慢，怎么能写一堆代码控制效果，设置改个效果，岂不是没时间dota了。\n\n\n也可以不依赖state_checked,在下面的回调中自行设置:\n\n```\n#Adapter\n@Override\npublic void onSelected(int position, View view) {\n    super.onSelected(position, view);\n}\n\n@Override\npublic void unSelected(int position, View view) {\n    super.unSelected(position, view);\n}\n```\n\n\n###事件\n\n```java\nmFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener()\n{\n  @Override\n  public boolean onTagClick(View view, int position, FlowLayout parent)\n  {\n      Toast.makeText(getActivity(), mVals[position], Toast.LENGTH_SHORT).show();\n      return true;\n  }\n});\n```\n\n点击标签时的回调。\n\n```java\nmFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener()\n{\n  @Override\n  public void onSelected(Set\u003cInteger\u003e selectPosSet)\n  {\n      getActivity().setTitle(\"choose:\" + selectPosSet.toString());\n  }\n});\n```\n选择多个标签时的回调。\n\n##预先设置Item选中\n\n```java\n//预先设置选中\nmAdapter.setSelectedList(1,3,5,7,8,9);\n//获得所有选中的pos集合\nflowLayout.getSelectedList();\n```\n\n\n\n","funding_links":[],"categories":["布局","Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FhongyangAndroid%2FFlowLayout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FhongyangAndroid%2FFlowLayout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FhongyangAndroid%2FFlowLayout/lists"}