先看效果:
SVID_20191215_173310_1
项目GitHub地址:https://github.com/YLY221/AddressProject
首先需要在build.gradle中添加以下三个依赖
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.support:design:28.0.0'
第一个依赖的作用是加强版的RecyclerView,它是GitHub上的开源项目,链接:https://github.com/CymChad/BaseRecyclerViewAdapterHelper/blob/master/README-cn.md
根据使用说明,还需要在外层build.gradle添加:
allprojects {
repositories {
...
maven {
url "https://jitpack.io"
}
}
}
第二个是Gson解析库,需要对json格式数据进行解析,在这里我就不联网获取地址数据了,我直接在main目录下新建assets文件夹,然后把下面json文件复制到assets文件里面:(由于csdn没有json格式数据,所以你们需要在本地新建文件region.json然后把下面的数据复制到新建的文件里面,放到assets文件夹中)
[{"label":"\u6cf8\u897f\u53bf","value":532527000000000,"children":[{"label":"\u4e2d\u67a2\u9547","value":532527101000000,"children":[{"label":"\u80dc\u5229\u6751\u59d4\u4f1a","value":532527101007000,"children":[{"label":"\u674e\u5bb6\u6751","value":532527101007001},{"label":"\u80dc\u5229\u6751","value":532527101007002},{"label":"\u5efa\u8bbe\u6751","value":532527101007003},{"label":"\u897f\u8425\u6751","value":532527101007004}]},{"label":"\u65b0\u534e\u6751\u59d4\u4f1a","value":532527101008000,"children":[{"label":"\u65b0\u534e\u6751\u4e00\u7ec4","value":532527101008001},{"label":"\u65b0\u534e\u6751\u4e8c\u7ec4","value":532527101008002},{"label":"\u65b0\u534e\u6751\u4e09\u7ec4","value":532527101008003},{"label":"\u65b0\u534e\u6751\u56db\u7ec4","value":532527101008004}]},{"label":"\u6c11\u4e3b\u6751\u59d4\u4f1a","value":532527101009000,"children":[{"label":"\u4e1c\u5c0f\u7ec4","value":532527101009001},{"label":"\u897f\u5c0f\u7ec4","value":532527101009002},{"label":"\u6c11\u4e3b\u5c0f\u7ec4","value":532527101009003},{"label":"\u949f\u79c0\u5c0f\u7ec4","value":532527101009004},{"label":"\u5bcc\u5f3a\u5c0f\u7ec4","value":532527101009005},{"label":"\u5bcc\u4e91\u5c0f\u7ec4","value":532527101009006}]},{"label":"\u74e6\u7a91\u6751\u59d4\u4f1a","value":532527101010000,"children":[{"label":"\u963f\u8def\u53d1\u6751","value":532527101010001},{"label":"\u74e6\u7a91\u6751","value":532527101010002},{"label":"\u6cf8\u6e90\u6d1e\u6751","value":532527101010003}]},{"label":"\u6843\u7b11\u6751\u59d4\u4f1a","value":532527101011000,"children":[{"label":"\u4e0a\u6751","value":532527101011001},{"label":"\u4e0b\u6751","value":532527101011002},{"label":"\u738b\u5bb6\u6751","value":532527101011003},{"label":"\u5c0f\u77f3\u6865","value":532527101011004},{"label":"\u5c0f\u6751","value":532527101011005}]},{"label":"\u9f99\u7538\u6751\u59d4\u4f1a","value":532527101012000,"children":[{"label":"\u5927\u9f99\u7538","value":532527101012001},{"label":"\u5c0f\u9f99\u7538","value":532527101012002},{"label":"\u6c5f\u5934\u6751","value":532527101012003},{"label":"\u5bfa\u95e8\u524d","value":532527101012004},{"label":"\u575d\u5fc3","value":532527101012005}]},{"label":"\u77f3\u6d1e\u6751\u59d4\u4f1a","value":532527101013000,"children":[{"label":"\u70df\u5149\u54e8\u6751","value":532527101013001},{"label":"\u77f3\u6d1e\u6751","value":532527101013002},{"label":"\u683c\u6765\u6cb3\u6751","value":532527101013003}]},{"label":"\u65b0\u5be8\u6751\u59d4\u4f1a","value":532527101014000,"children":[{"label":"\u9ec4\u8349\u6d32","value":532527101014001},{"label":"\u65b0\u5be8\u5b50","value":532527101014002},{"label":"\u9646\u826f\u5be8","value":532527101014003},{"label":"\u795e\u6811\u5761","value":532527101014004}]},{"label":"\u9038\u5703\u6751\u59d4\u4f1a","value":532527101015000,"children":[{"label":"\u5927\u9038\u5703","value":532527101015001},{"label":"\u5c0f\u9038\u5703","value":532527101015002},{"label":"\u9c81\u514b","value":532527101015003},{"label":"\u6c34\u7b90\u6751","value":532527101015004},{"label":"\u9a6c\u978d\u5c71\u6751","value":532527101015005},{"label":"\u5c16\u5c71\u6751","value":532527101015006}]},{"label":"\u7cef\u5e03\u6751\u59d4\u4f1a","value":532527101207000,"children":[{"label":"\u7cef\u5e03\u6751","value":532527101207001},{"label":"\u8d44\u820d\u6751","value":532527101207002},{"label":"\u5927\u5174\u5be8\u6751","value":532527101207003},{"label":"\u5c0f\u5174\u5be8\u6751","value":532527101207004}]},{"label":"\u897f\u534e\u6751\u59d4\u4f1a","value":532527101208000,"children":[{"label":"\u4e01\u5408\u6751","value":532527101208001},{"label":"\u897f\u534e\u5bfa","value":532527101208002},{"label":"\u7f8a\u683c\u9ed1","value":532527101208003},{"label":"\u8def\u7eb3\u79df","value":532527101208004},{"label":"\u843d\u6c34\u6d1e","value":532527101208005}]},{"label":"\u7acb\u5c97\u6751\u59d4\u4f1a","value":532527101210000,"children":[{"label":"\u603b\u6751\u6751","value":532527101210001},{"label":"\u5927\u7acb\u5c97\u6751","value":532527101210002},{"label":"\u5c0f\u7acb\u5c97\u6751","value":532527101210003}]},{"label":"\u963f\u52d2\u6751\u59d4\u4f1a","value":532527101211000,"children":[{"label":"\u963f\u52d2\u6751","value":532527101211001},{"label":"\u4e09\u5bb6\u6751","value":532527101211002},{"label":"\u5409\u53cc\u6751","value":532527101211003}]},{"label":"\u56fa\u767d\u6751\u59d4\u4f1a","value":532527101214000,"children":[{"label":"\u56fa\u767d\u6751","value":532527101214001},{"label":"\u53cc\u9f99\u6751","value":532527101214002}]},{"label":"\u5927\u5174\u6751\u59d4\u4f1a","value":532527101215000,"children":[{"label":"\u5927\u5174\u5821","value":532527101215001},{"label":"\u5c0f\u5174\u5821","value":532527101215002},{"label":"\u7eb3\u5821\u6751","value":532527101215003},{"label":"\u5938\u897f\u6751","value":532527101215004}]},{"label":"\u6328\u6765\u6751\u59d4\u4f1a","value":532527101216000,"children":[{"label":"\u5927\u6328\u6765\u6751","value":532527101216001},{"label":"\u4e2d\u6328\u6765\u6751","value":532527101216002},{"label":"\u5c0f\u6328\u6765\u6751","value":532527101216003},{"label":"\u91cc\u6bd4\u6751","value":532527101216004},{"label":"\u6728\u5f97\u6751","value":532527101216005},{"label":"\u957f\u8001\u7530\u6751","value":532527101216006},{"label":"\u77e5\u5e9c\u5858\u6751","value":532527101216007}]},{"label":"\u963f\u5e73\u6751\u59d4\u4f1a","value":532527101217000,"children":[{"label":"\u5c0f\u96e8\u9f99","value":532527101217001},{"label":"\u5927\u96e8\u9f99","value":532527101217002},{"label":"\u963f\u5e73\u6751","value":532527101217003},{"label":"\u96e8\u54a9\u6751","value":532527101217004}]},{"label":"\u65e2\u6bd4\u6751\u59d4\u4f1a","value":532527101218000,"children":[{"label":"\u65e2\u6bd4\u79df","value":532527101218001},{"label":"\u65b0\u5be8\u6751","value":532527101218002},{"label":"\u8001\u5be8\u6751","value":532527101218003},{"label":"\u4e0a\u65b0\u6c11\u6751","value":532527101218004},{"label":"\u4e0b\u65b0\u6c11\u6751","value":532527101218005},{"label":"\u5927\u96e8\u6742\u6751","value":532527101218006},{"label":"\u5c0f\u96e8\u6742\u6751","value":532527101218007},{"label":"\u6c49\u6ce5\u6c9f\u6751","value":532527101218008},{"label":"\u767d\u6ce5\u5761\u6751","value":532527101218009},{"label":"\u7ea2\u77f3\u5ca9\u6751","value":532527101218010},{"label":"\u7ea2\u83b2\u6751\u6751","value":532527101218011}]}]},{"label":"\u91d1\u9a6c\u9547","value":532527102000000,"children":[{"label":"\u7235\u518c\u6751\u59d4\u4f1a","value":532527102201000,"children":[{"label":"\u7b2c\u4e00\u6751","value":532527102201001},{"label":"\u7b2c\u4e8c\u6751","value":532527102201002},{"label":"\u7b2c\u4e09\u6751","value":532527102201003},{"label":"\u7b2c\u56db\u6751","value":532527102201004}]},{"label":"\u65b0\u5b89\u6751\u59d4\u4f1a","value":532527102202000,"children":[{"label":"\u65b0\u82d7\u6751\u6751","value":532527102202001},{"label":"\u4e95\u4e0d\u5e72\u6751","value":532527102202002}]},{"label":"\u5c71\u53e3\u6751\u59d4\u4f1a","value":532527102203000,"children":[{"label":"\u6240\u65b0\u6751","value":532527102203001},{"label":"\u6240\u5f97\u6751","value":532527102203002},{"label":"\u5c71\u53e3\u6751","value":532527102203003}]},{"label":"\u592a\u5e73\u6751\u59d4\u4f1a","value":532527102204000,"children":[{"label":"\u52a0\u4e50\u6751","value":532527102204001},{"label":"\u592a\u5e73\u6751","value":532527102204002},{"label":"\u5927\u91d1\u9a6c\u6751","value":532527102204003},{"label":"\u5c0f\u91d1\u9a6c\u6751","value":532527102204004}]},{"label":"\u65b0\u575d\u6751\u59d4\u4f1a","value":532527102205000,"children":[{"label":"\u65b0\u575d\u6751","value":532527102205001},{"label":"\u767d\u77f3\u5934\u6751","value":532527102205002},{"label":"\u5e03\u767d\u6751","value":532527102205003},{"label":"\u767d\u9732\u6751","value":532527102205004}]},{"label":"\u96e8\u9f99\u6751\u59d4\u4f1a","value":532527102206000,"children":[{"label":"\u96e8\u9f99\u6751","value":532527102206001},{"label":"\u5c0f\u9f99\u6f6d\u6751","value":532527102206002},{"label":"\u5c0f\u575d\u6cb3\u6751","value":532527102206003}]},{"label":"\u77f3\u7f38\u51b2\u6751\u59d4\u4f1a","value":532527102207000,"children":[{"label":"\u77f3\u7f38\u51b2","value":532527102207001},{"label":"\u5409\u6446\u5927\u5be8","value":532527102207002},{"label":"\u5409\u6446\u5c0f\u5be8","value":532527102207003},{"label":"\u65b0\u8857\u5b50","value":532527102207004},{"label":"\u65b0\u5e84\u79d1","value":532527102207005},{"label":"\u6c34\u8349\u6d3c","value":532527102207006},{"label":"\u5c0f\u6838\u6843","value":532527102207007},{"label":"\u78a7\u6843\u6751","value":532527102207008},{"label":"\u5927\u6838\u6843\u6751","value":532527102207009}]}]},{"label":"\u65e7\u57ce\u9547","value":532527104000000,"children":[{"label":"\u65e7\u57ce\u6751\u59d4\u4f1a","value":532527104201000,"children":[{"label":"\u65e7\u57ce","value":532527104201001},{"label":"\u74e6\u820d","value":532527104201002},{"label":"\u8def\u6eaa\u767d","value":532527104201003},{"label":"\u5927\u65e7\u9f99","value":532527104201004}]},{"label":"\u9752\u79be\u6751\u59d4\u4f1a","value":532527104202000,"children":[{"label":"\u9752\u79be","value":532527104202001},{"label":"\u5927\u77e3\u767d","value":532527104202002},{"label":"\u5927\u767d\u4e50","value":532527104202003},{"label":"\u5c0f\u767d\u4e50","value":532527104202004}]},{"label":"\u9ed1\u820d\u6751\u59d4\u4f1a","value":532527104203000,"children":[{"label":"\u9ed1\u820d","value":532527104203001},{"label":"\u6e05\u5858\u5b50","value":532527104203002}]},{"label":"\u7763\u5e03\u5e9c\u6751\u59d4\u4f1a","value":532527104204000,"children":[{"label":"\u9976\u5bb6\u5be8","value":532527104204001},{"label":"\u8d75\u5bb6\u5be8","value":532527104204002},{"label":"\u5927\u5be8","value":532527104204003},{"label":"\u5c0f\u661f\u5be8","value":532527104204004},{"label":"\u5b50\u4ea4","value":532527104204005},{"label":"\u65b0\u54e8","value":532527104204006}]},{"label":"\u79e7\u7530\u575d\u6751\u59d4\u4f1a","value":532527104205000,"children":[{"label":"\u5be8\u5b50\u5c71","value":532527104205001},{"label":"\u79e7\u7530\u575d","value":532527104205002},{"label":"\u8def\u6d12","value":532527104205003},{"label":"\u5c0f\u65e7\u9f99","value":532527104205004},{"label":"\u5c0f\u77e3\u767d","value":532527104205005},{"label":"\u74e6\u69fd\u5c71","value":532527104205006},{"label":"\u8005\u767d","value":532527104205007}]},{"label":"\u5f2f\u8170\u6811\u6751\u59d4\u4f1a","value":532527104206000,"children":[{"label":"\u5f2f\u8170\u6811","value":532527104206001},{"label":"\u72ec\u5bb6\u6751","value":532527104206002},{"label":"\u96c0\u68a8\u6811","value":532527104206003}]},{"label":"\u677e\u9e64\u6751\u59d4\u4f1a","value":532527104207000,"children":[{"label":"\u677e\u9e64\u6751","value":532527104207001},{"label":"\u4e09\u5bb6\u6751","value":532527104207002},{"label":"\u4e50\u4e1a\u6751","value":532527104207003}]},{"label":"\u4e09\u6cb3\u6751\u59d4\u4f1a","value":532527104208000,"children":[{"label":"\u4e09\u6cb3\u6751","value":532527104208001},{"label":"\u51b2\u5b50\u6751","value":532527104208002},{"label":"\u575d\u5934\u8d77\u6751","value":532527104208003}]},{"label":"\u6728\u9f99\u6751\u59d4\u4f1a","value":532527104209000,"children":[{"label":"\u65b0\u5be8\u5b50","value":532527104209001},{"label":"\u8001\u575d\u6e7e","value":532527104209002},{"label":"\u7ea2\u7530","value":532527104209003},{"label":"\u5c0f\u6728\u9f99","value":532527104209004},{"label":"\u4e2d\u6446","value":532527104209005}]},{"label":"\u77ff\u5382\u6751\u59d4\u4f1a","value":532527104210000,"children":[{"label":"\u77ff\u5382\u6751","value":532527104210001},{"label":"\u9a6c\u69fd\u51b2\u4e2d\u5be8","value":532527104210002},{"label":"\u9a6c\u69fd\u51b2\u4e0a\u5be8","value":532527104210003},{"label":"\u9a6c\u69fd\u51b2\u4e0b\u5be8","value":532527104210004},{"label":"\u6e05\u6c34\u6c9f\u6751","value":532527104210005}]},{"label":"\u677f\u6865\u6751\u59d4\u4f1a","value":532527104211000,"children":[{"label":"\u9f99\u6f6d\u51b2","value":532527104211001},{"label":"\u9c81\u767d","value":532527104211002},{"label":"\u963f\u62c9\u5761","value":532527104211003},{"label":"\u963f\u5b50\u7530","value":532527104211004},{"label":"\u677f\u6865\u5927\u5be8","value":532527104211005},{"label":"\u677f\u6865\u5c0f\u5be8","value":532527104211006},{"label":"\u6cb3\u6c11\u6751","value":532527104211007}]}]},{"label":"\u5348\u8857\u94fa\u9547","value":532527106000000,"children":[{"label":"\u6cb3\u5916\u6751\u59d4\u4f1a","value":532527106201000,"children":[{"label":"\u4e0a\u9a6c\u6751","value":532527106201001},{"label":"\u4e60\u7532\u6751","value":532527106201002},{"label":"\u6cb3\u5916\u6751","value":532527106201003},{"label":"\u5348\u8857\u94fa\u6751","value":532527106201004},{"label":"\u8fbe\u5de6\u6751","value":532527106201005},{"label":"\u5927\u6817\u6811\u6751","value":532527106201006},{"label":"\u65b9\u5143\u54e8\u6751","value":532527106201007},{"label":"\u963f\u8328\u9f99\u6751","value":532527106201008},{"label":"\u5c0f\u6cb3\u5e95\u6751","value":532527106201009}]},{"label":"\u5927\u6c34\u5858\u6751\u59d4\u4f1a","value":532527106202000,"children":[{"label":"\u5409\u5730\u6751","value":532527106202001},{"label":"\u8001\u8425\u6751","value":532527106202002},{"label":"\u65b0\u8425\u6751","value":532527106202003},{"label":"\u8def\u53e3\u6751","value":532527106202004},{"label":"\u56e2\u5c71\u6751","value":532527106202005},{"label":"\u963f\u4fdd\u6751","value":532527106202006},{"label":"\u98de\u5348\u6751","value":532527106202007},{"label":"\u65b0\u5e84\u6751","value":532527106202008},{"label":"\u9f99\u6f6d\u6cb3\u6751","value":532527106202009}]},{"label":"\u96e8\u6d12\u6751\u59d4\u4f1a","value":532527106203000,"children":[{"label":"\u96e8\u6d12\u6751","value":532527106203001},{"label":"\u5927\u8db3\u5f55\u6751","value":532527106203002},{"label":"\u5c0f\u8db3\u5f55\u6751","value":532527106203003},{"label":"\u65b0\u5be8\u6751","value":532527106203004},{"label":"\u8328\u51f9\u6751","value":532527106203005},{"label":"\u5927\u5858\u6751","value":532527106203006},{"label":"\u6838\u6843\u51f9","value":532527106203007},{"label":"\u96c5\u4e50\u6751","value":532527106203008}]},{"label":"\u666e\u6cfd\u6751\u59d4\u4f1a","value":532527106204000,"children":[{"label":"\u767e\u83ca\u6751","value":532527106204001},{"label":"\u666e\u6cfd\u6751","value":532527106204002},{"label":"\u83f1\u5858\u6751","value":532527106204003},{"label":"\u7ea2\u5761\u6751","value":532527106204004},{"label":"\u4e45\u6052\u6751","value":532527106204005},{"label":"\u4e0a\u5be8\u6751","value":532527106204006},{"label":"\u72ec\u5584\u6751","value":532527106204007},{"label":"\u62a4\u56fd\u6751","value":532527106204008}]},{"label":"\u7eff\u5ce8\u6751\u59d4\u4f1a","value":532527106205000,"children":[{"label":"\u7eff\u5ce8\u6751","value":532527106205001},{"label":"\u4e0a\u8def\u533a\u6751","value":532527106205002},{"label":"\u4e0b\u8def\u533a\u6751","value":532527106205003},{"label":"\u8001\u571f\u5730\u6751","value":532527106205004},{"label":"\u5927\u4e60\u9f99\u6751","value":532527106205005},{"label":"\u5c0f\u4e60\u9f99\u6751","value":532527106205006},{"label":"\u78e8\u5c71\u6751","value":532527106205007},{"label":"\u9f99\u6f6d\u6751","value":532527106205008},{"label":"\u53d6\u5c3c\u9ed1\u65b0\u5be8\u6751","value":532527106205009},{"label":"\u53d6\u5c3c\u9ed1\u8001\u5be8\u6751","value":532527106205010}]},{"label":"\u55b7\u6cc9\u6751\u59d4\u4f1a","value":532527106206000,"children":[{"label":"\u55b7\u6cc9\u5927\u5be8","value":532527106206001},{"label":"\u55b7\u6cc9\u5c0f\u5be8","value":532527106206002},{"label":"\u5c16\u5c71\u5927\u5be8","value":532527106206003},{"label":"\u5c16\u5c71\u5c0f\u5be8","value":532527106206004},{"label":"\u81ea\u8db3\u6751","value":532527106206005},{"label":"\u8eb2\u725b\u5c71\u6751","value":532527106206006},{"label":"\u6cc9\u4e0a\u6751","value":532527106206007}]},{"label":"\u679c\u5409\u6751\u59d4\u4f1a","value":532527106207000,"children":[{"label":"\u679c\u5409\u6751","value":532527106207001},{"label":"\u5c0f\u820d\u7cef\u6751","value":532527106207002},{"label":"\u5927\u820d\u7cef\u6751","value":532527106207003},{"label":"\u8349\u6d77\u5b50\u6751","value":532527106207004},{"label":"\u8fc7\u8def\u7530\u6751","value":532527106207005},{"label":"\u5377\u6d1e\u95e8\u6751","value":532527106207006},{"label":"\u6587\u660e\u6751","value":532527106207007},{"label":"\u79e7\u8349\u5761\u6751","value":532527106207008},{"label":"\u5c16\u5761\u6751","value":532527106207009},{"label":"\u6d77\u53e3\u6751","value":532527106207010}]},{"label":"\u5c71\u6797\u6751\u59d4\u4f1a","value":532527106208000,"children":[{"label":"\u5c71\u6797\u6751","value":532527106208001},{"label":"\u62d6\u89c1\u6751","value":532527106208002},{"label":"\u575d\u4e0a\u6751","value":532527106208003},{"label":"\u6c34\u79e7\u7530\u6751","value":532527106208004},{"label":"\u6768\u67f3\u575d\u6751","value":532527106208005},{"label":"\u8273\u8272\u5761\u6751","value":532527106208006}]},{"label":"\u51e4\u5348\u6751\u59d4\u4f1a","value":532527106209000,"children":[{"label":"\u51e4\u5348\u6751","value":532527106209001},{"label":"\u572d\u843d\u54e8\u6751","value":532527106209002},{"label":"\u5927\u5ce8\u6885\u6751","value":532527106209003},{"label":"\u5c0f\u5ce8\u6885\u6751","value":532527106209004}]},{"label":"\u6c34\u5858\u6751\u59d4\u4f1a","value":532527106210000,"children":[{"label":"\u6c34\u5858\u6751","value":532527106210001},{"label":"\u963f\u53e4\u5757\u65b0\u5be8","value":532527106210002},{"label":"\u963f\u53e4\u5757\u8001\u5be8","value":532527106210003},{"label":"\u9ebb\u5b50\u54e8\u6751","value":532527106210004},{"label":"\u4e09\u68f5\u6811\u6751","value":532527106210005},{"label":"\u7cef\u8863\u6751","value":532527106210006},{"label":"\u77f3\u78d9\u5b50\u6751","value":532527106210007},{"label":"\u5c0f\u6cb3\u8fb9\u6751","value":532527106210008}]},{"label":"\u6797\u6811\u6751\u59d4\u4f1a","value":532527106211000,"children":[{"label":"\u8001\u677f\u7530\u6751","value":532527106211001},{"label":"\u6797\u6811\u6751","value":532527106211002},{"label":"\u5c0f\u7b3c\u6865\u6751","value":532527106211003},{"label":"\u5927\u7b3c\u6865\u6751","value":532527106211004},{"label":"\u4e09\u9053\u7b90\u6751","value":532527106211005},{"label":"\u5927\u5e73\u6ee9\u6751","value":532527106211006}]}]},{"label":"\u767d\u6c34\u9547","value":532527107000000,"children":[{"label":"\u9ed1\u9f99\u6751\u59d4\u4f1a","value":532527107201000,"children":[{"label":"\u9ed1\u9f99","value":532527107201001},{"label":"\u7af9\u6eaa","value":532527107201002},{"label":"\u5c0f\u5b5f\u6cfd","value":532527107201003},{"label":"\u5c0f\u4e94\u961f","value":532527107201004},{"label":"\u5927\u5174\u5b89","value":532527107201005},{"label":"\u5c0f\u5174\u5b89","value":532527107201006},{"label":"\u5927\u5b5f\u6cfd","value":532527107201007},{"label":"\u5927\u8863","value":532527107201008}]},{"label":"\u6843\u56ed\u6751\u59d4\u4f1a","value":532527107202000,"children":[{"label":"\u536b\u6c11","value":532527107202001},{"label":"\u6728\u65e7","value":532527107202002},{"label":"\u5927\u534e\u897f","value":532527107202003},{"label":"\u5c0f\u534e\u897f","value":532527107202004},{"label":"\u6843\u56ed","value":532527107202005}]},{"label":"\u7ea2\u674f\u6751\u59d4\u4f1a","value":532527107203000,"children":[{"label":"\u5927\u7ea2\u674f","value":532527107203001},{"label":"\u5c0f\u7ea2\u674f","value":532527107203002},{"label":"\u53ef\u4fdd","value":532527107203003},{"label":"\u6e14\u529b","value":532527107203004}]},{"label":"\u5de8\u6728\u6751\u59d4\u4f1a","value":532527107204000,"children":[{"label":"\u5de8\u6728","value":532527107204001},{"label":"\u677e\u6811","value":532527107204002},{"label":"\u6cb3\u843d","value":532527107204003},{"label":"\u6728\u94ce","value":532527107204004}]},{"label":"\u76ca\u8c37\u6751\u59d4\u4f1a","value":532527107205000,"children":[{"label":"\u76ca\u8c37","value":532527107205001},{"label":"\u5c71\u767d","value":532527107205002}]},{"label":"\u5584\u5bfc\u6751\u59d4\u4f1a","value":532527107206000,"children":[{"label":"\u5584\u5bfc","value":532527107206001},{"label":"\u897f\u79df\u5927\u5be8","value":532527107206002},{"label":"\u897f\u79df\u5c0f\u5be8","value":532527107206003},{"label":"\u5e73\u5c71","value":532527107206004},{"label":"\u6cd5\u571f","value":532527107206005}]},{"label":"\u65e2\u5eb6\u6751\u59d4\u4f1a","value":532527107207000,"children":[{"label":"\u65e2\u5eb6","value":532527107207001},{"label":"\u543e\u4e43\u767d","value":532527107207002},{"label":"\u5c71\u8863","value":532527107207003},{"label":"\u9f99\u6f6d","value":532527107207004},{"label":"\u543e\u8005","value":532527107207005}]},{"label":"\u65e0\u6d6a\u6751\u59d4\u4f1a","value":532527107208000,"children":[{"label":"\u5927\u65e0\u6d6a","value":532527107208001},{"label":"\u5c0f\u65e0\u6d6a","value":532527107208002},{"label":"\u5229\u6c11","value":532527107208003},{"label":"\u81f4\u7965","value":532527107208004}]},{"label":"\u5c71\u9ed1\u6751\u59d4\u4f1a","value":532527107209000,"children":[{"label":"\u5316\u4e50","value":532527107209001},{"label":"\u5927\u6811","value":532527107209002},{"label":"\u6c34\u4e95","value":532527107209003},{"label":"\u5c71\u9ed1","value":532527107209004},{"label":"\u5fb7\u6751","value":532527107209005}]},{"label":"\u5e73\u7530\u6751\u59d4\u4f1a","value":532527107210000,"children":[{"label":"\u6817\u6811","value":532527107210001},{"label":"\u5c0f\u6cb3","value":532527107210002},{"label":"\u6cd5\u52d2","value":532527107210003},{"label":"\u6545\u9647","value":532527107210004},{"label":"\u957f\u677f\u7530","value":532527107210005},{"label":"\u5927\u5be8","value":532527107210006},{"label":"\u5e73\u7530","value":532527107210007},{"label":"\u6cb3\u5174","value":532527107210008},{"label":"\u8001\u5be8","value":532527107210009},{"label":"\u5e73\u5174","value":532527107210010}]},{"label":"\u679c\u8863\u6751\u59d4\u4f1a","value":532527107211000,"children":[{"label":"\u6240\u767d","value":532527107211001},{"label":"\u7ea2\u77f3\u5ca9","value":532527107211002},{"label":"\u9ed1\u5761","value":532527107211003},{"label":"\u4e0a\u679c\u8863","value":532527107211004},{"label":"\u4e0b\u679c\u8863","value":532527107211005},{"label":"\u5e72\u6ce5\u5858","value":532527107211006},{"label":"\u591a\u8863\u6811","value":532527107211007},{"label":"\u7eff\u82b1","value":532527107211008},{"label":"\u8def\u8863","value":532527107211009}]},{"label":"\u76f4\u9091\u6751\u59d4\u4f1a","value":532527107212000,"children":[{"label":"\u5927\u76f4\u9091","value":532527107212001},{"label":"\u5c0f\u76f4\u9091","value":532527107212002},{"label":"\u9ed1\u5c71","value":532527107212003},{"label":"\u54e8\u7530","value":532527107212004},{"label":"\u5c0f\u6c34\u5858","value":532527107212005},{"label":"\u5927\u5c71","value":532527107212006},{"label":"\u767d\u9e64","value":532527107212007}]}]},{"label":"\u5411\u9633\u4e61","value":532527201000000,"children":[{"label":"\u65e7\u5be8\u6751\u59d4\u4f1a","value":532527201201000,"children":[{"label":"\u5b89\u8feb\u8feb","value":532527201201001},{"label":"\u65e7\u5be8","value":532527201201002},{"label":"\u767d\u6ce5\u5858","value":532527201201003},{"label":"\u767d\u77f3\u5ca9","value":532527201201004},{"label":"\u8def\u65b0\u6751","value":532527201201005},{"label":"\u5927\u6cb3","value":532527201201006},{"label":"\u4ed3\u84b2\u5802","value":532527201201007},{"label":"\u5ca9\u5cf0\u6d1e","value":532527201201008},{"label":"\u963f\u77e3","value":532527201201009}]},{"label":"\u8db3\u9a6c\u6751\u59d4\u4f1a","value":532527201202000,"children":[{"label":"\u7a84\u4e2b\u53e3","value":532527201202001},{"label":"\u5c0f\u6a2a\u7b90","value":532527201202002},{"label":"\u5f88\u574e","value":532527201202003},{"label":"\u5927\u8db3\u9a6c","value":532527201202004},{"label":"\u5927\u6865","value":532527201202005},{"label":"\u5c0f\u8db3\u9a6c","value":532527201202006},{"label":"\u4e2d\u516d","value":532527201202007},{"label":"\u6e29\u9971","value":532527201202008}]},{"label":"\u6cd5\u571f\u6751\u59d4\u4f1a","value":532527201203000,"children":[{"label":"\u65b0\u5e84\u79d1","value":532527201203001},{"label":"\u65e2\u77e3\u574e","value":532527201203002},{"label":"\u6cd5\u571f","value":532527201203003},{"label":"\u62d6\u843d","value":532527201203004},{"label":"\u767d\u6ce5\u4e95","value":532527201203005},{"label":"\u6728\u8863","value":532527201203006},{"label":"\u6728\u5854","value":532527201203007}]},{"label":"\u52fa\u5e03\u767d\u6751\u59d4\u4f1a","value":532527201204000,"children":[{"label":"\u52fa\u5e03\u767d\u4e0a\u5be8","value":532527201204001},{"label":"\u5858\u623f","value":532527201204002},{"label":"\u65b0\u5e84\u79d1","value":532527201204003},{"label":"\u6768\u5bb6\u5be8","value":532527201204004},{"label":"\u5927\u77f3\u76c6","value":532527201204005},{"label":"\u963f\u77e3\u574e","value":532527201204006},{"label":"\u9ec4\u680e\u6811","value":532527201204007},{"label":"\u8001\u8857\u5b50","value":532527201204008},{"label":"\u5f97\u51b2\u4e0a\u5be8","value":532527201204009},{"label":"\u52fa\u5e03\u767d\u6751","value":532527201204010}]},{"label":"\u6b79\u9c81\u6751\u59d4\u4f1a","value":532527201205000,"children":[{"label":"\u5c0f\u5353\u522b","value":532527201205001},{"label":"\u5927\u5353\u522b","value":532527201205002},{"label":"\u5377\u6d1e\u95e8","value":532527201205003},{"label":"\u6b79\u9c81\u9ebb\u5858\u5be8","value":532527201205004},{"label":"\u6885\u5b50\u7b90","value":532527201205005},{"label":"\u6b79\u9c81\u65b0\u5be8","value":532527201205006},{"label":"\u6b79\u9c81\u8001\u5be8","value":532527201205007},{"label":"\u5927\u6b79\u9c81","value":532527201205008}]},{"label":"\u963f\u76c8\u91cc\u6751\u59d4\u4f1a","value":532527201206000,"children":[{"label":"\u4e09\u5bb6\u6751","value":532527201206001},{"label":"\u5e03\u79df","value":532527201206002},{"label":"\u72ec\u5bb6","value":532527201206003},{"label":"\u65b0\u5be8","value":532527201206004},{"label":"\u6240\u897f\u683c","value":532527201206005},{"label":"\u963f\u76c8\u91cc","value":532527201206006},{"label":"\u63e1\u6d4b","value":532527201206007}]},{"label":"\u4e60\u5ce8\u6751\u59d4\u4f1a","value":532527201207000,"children":[{"label":"\u4e60\u5ce8\u6751","value":532527201207001},{"label":"\u534e\u56fd\u6751","value":532527201207002}]},{"label":"\u6c99\u9a6c\u6751\u59d4\u4f1a","value":532527201208000,"children":[{"label":"\u5c0f\u6728\u8863","value":532527201208001},{"label":"\u5c0f\u5f97\u4e50\u4e0b\u5be8","value":532527201208002},{"label":"\u5c0f\u5f97\u4e50\u4e0a\u5be8","value":532527201208003},{"label":"\u65b0\u5be8","value":532527201208004},{"label":"\u5927\u6c99\u9a6c","value":532527201208005},{"label":"\u5927\u5f97\u4e50","value":532527201208006},{"label":"\u5c71\u8272","value":532527201208007},{"label":"\u6ce5\u58a8\u52d2","value":532527201208008},{"label":"\u6240\u6885\u843d","value":532527201208009},{"label":"\u9c81\u9ed1","value":532527201208010},{"label":"\u5c0f\u6c99\u9a6c","value":532527201208011}]}]},{"label":"\u4e09\u5858\u4e61","value":532527202000000,"children":[{"label":"\u9686\u5fb7\u6751\u59d4\u4f1a","value":532527202201000,"children":[{"label":"\u67f4\u6751","value":532527202201001},{"label":"\u9686\u5fb7","value":532527202201002},{"label":"\u5927\u4e8c\u5858","value":532527202201003},{"label":"\u5c0f\u4e8c\u5858","value":532527202201004},{"label":"\u65e0\u5ea6\u5761","value":532527202201005},{"label":"\u5c0f\u9ed1\u7b90","value":532527202201006}]},{"label":"\u674e\u5b50\u7b90\u6751\u59d4\u4f1a","value":532527202202000,"children":[{"label":"\u5c0f\u963f\u68da","value":532527202202001},{"label":"\u674e\u5b50\u7b90","value":532527202202002},{"label":"\u963f\u6d1e\u6751","value":532527202202003},{"label":"\u5468\u4f9d\u6751","value":532527202202004},{"label":"\u69d0\u82b1\u6811","value":532527202202005},{"label":"\u963f\u6c38\u5409","value":532527202202006},{"label":"\u5927\u963f\u68da","value":532527202202007},{"label":"\u652f\u9505\u5c71","value":532527202202008}]},{"label":"\u7b90\u95e8\u6751\u59d4\u4f1a","value":532527202203000,"children":[{"label":"\u7b90\u95e8","value":532527202203001},{"label":"\u5927\u6e7e\u534a\u5b54","value":532527202203002},{"label":"\u5c0f\u6e7e\u534a\u5b54","value":532527202203003},{"label":"\u70c2\u6ce5\u7b90","value":532527202203004},{"label":"\u6bd5\u5757","value":532527202203005},{"label":"\u83ca\u7579","value":532527202203006}]},{"label":"\u963f\u5b9a\u6751\u59d4\u4f1a","value":532527202204000,"children":[{"label":"\u5927\u963f\u5b9a","value":532527202204001},{"label":"\u5c0f\u963f\u5b9a","value":532527202204002},{"label":"\u5927\u6c34\u4e95","value":532527202204003}]},{"label":"\u8fde\u57ce\u6751\u59d4\u4f1a","value":532527202205000,"children":[{"label":"\u8fde\u57ce","value":532527202205001},{"label":"\u963f\u9c81\u54e8","value":532527202205002},{"label":"\u9a6c\u5bb6\u5be8","value":532527202205003},{"label":"\u6c60\u897f","value":532527202205004}]},{"label":"\u4e09\u5858\u6751\u59d4\u4f1a","value":532527202206000,"children":[{"label":"\u5927\u5b54\u7167\u666e","value":532527202206001},{"label":"\u5c0f\u5b54\u7167\u666e","value":532527202206002},{"label":"\u5927\u5bc6\u679d","value":532527202206003},{"label":"\u4e09\u5858\u8857","value":532527202206004},{"label":"\u5858\u623f","value":532527202206005},{"label":"\u5e03\u5fb7\u9686\u4e0a\u5be8","value":532527202206006},{"label":"\u5e03\u5fb7\u9686\u4e0b\u5be8","value":532527202206007},{"label":"\u5e03\u5fb7\u9686\u8001\u5be8","value":532527202206008}]},{"label":"\u4ff1\u4e45\u6751\u59d4\u4f1a","value":532527202207000,"children":[{"label":"\u5927\u4ff1\u4e45","value":532527202207001},{"label":"\u5c0f\u4ff1\u4e45","value":532527202207002},{"label":"\u77f3\u9636\u811a\u4e0a\u5be8","value":532527202207003},{"label":"\u77f3\u9636\u811a\u4e0b\u5be8","value":532527202207004},{"label":"\u963f\u8def\u767d","value":532527202207005},{"label":"\u5e73\u7530\u4e00\u961f","value":532527202207006},{"label":"\u5e73\u7530\u4e8c\u961f","value":532527202207007}]},{"label":"\u65b9\u6446\u6751\u59d4\u4f1a","value":532527202208000,"children":[{"label":"\u5c0f\u5bc6\u679d","value":532527202208001},{"label":"\u5e84\u79d1","value":532527202208002},{"label":"\u6c99\u6e7e","value":532527202208003},{"label":"\u5c0f\u65b9\u6446","value":532527202208004},{"label":"\u6cd5\u679c","value":532527202208005},{"label":"\u5927\u65b9\u6446","value":532527202208006}]}]},{"label":"\u6c38\u5b81\u4e61","value":532527203000000,"children":[{"label":"\u6c38\u5b81\u6751\u59d4\u4f1a","value":532527203201000,"children":[{"label":"\u5927\u6c38\u5b81\u6751","value":532527203201001},{"label":"\u5c0f\u6c38\u5b81\u6751","value":532527203201002},{"label":"\u571f\u627e\u6751","value":532527203201003},{"label":"\u57ce\u5b50\u6751","value":532527203201004},{"label":"\u5c0f\u6c5f\u4e0a\u5be8\u6751","value":532527203201005},{"label":"\u5c0f\u6c5f\u4e0b\u5be8\u6751","value":532527203201006}]},{"label":"\u7b3c\u518c\u6751\u59d4\u4f1a","value":532527203202000,"children":[{"label":"\u6797\u76ca\u6751","value":532527203202001},{"label":"\u738b\u5bb6\u5be8\u6751","value":532527203202002},{"label":"\u5f20\u5bb6\u5be8\u6751","value":532527203202003},{"label":"\u4e5d\u6eaa\u5c71\u6751","value":532527203202004},{"label":"\u5927\u6c99\u5730\u6751","value":532527203202005},{"label":"\u5927\u84bf\u7b90\u6751","value":532527203202006},{"label":"\u5c0f\u84bf\u7b90\u6751","value":532527203202007},{"label":"\u8272\u8033\u53e4\u524d\u5be8\u6751","value":532527203202008},{"label":"\u8272\u8033\u53e4\u540e\u5be8\u6751","value":532527203202009}]},{"label":"\u820d\u8005\u6751\u59d4\u4f1a","value":532527203203000,"children":[{"label":"\u7eb8\u5382\u6751","value":532527203203001},{"label":"\u820d\u8005\u5927\u5be8\u6751","value":532527203203002},{"label":"\u820d\u8005\u5c0f\u5be8\u6751","value":532527203203003},{"label":"\u6d0b\u6d1e\u6cb3\u6751","value":532527203203004},{"label":"\u5c0f\u6316\u4e0d\u5f97\u6751","value":532527203203005},{"label":"\u5927\u6316\u4e0d\u5f97\u6751","value":532527203203006},{"label":"\u70ad\u623f\u6751","value":532527203203007},{"label":"\u957f\u5cad\u5e72\u6751","value":532527203203008},{"label":"\u5f90\u5bb6\u5be8\u6751","value":532527203203009},{"label":"\u5f20\u5bb6\u5be8\u6751","value":532527203203010},{"label":"\u674e\u5bb6\u5be8\u6751","value":532527203203011},{"label":"\u9ec4\u5bb6\u5be8\u6751","value":532527203203012}]},{"label":"\u963f\u671d\u6751\u59d4\u4f1a","value":532527203204000,"children":[{"label":"\u963f\u671d\u4e0a\u5be8\u6751","value":532527203204001},{"label":"\u963f\u671d\u4e0b\u5be8\u6751","value":532527203204002},{"label":"\u820d\u5353\u6751","value":532527203204003},{"label":"\u4e09\u9053\u7b90\u6751","value":532527203204004},{"label":"\u5c0f\u6c34\u4e95\u6751","value":532527203204005},{"label":"\u5927\u5bc6\u679d\u6751","value":532527203204006}]},{"label":"\u6cd5\u8863\u6751\u59d4\u4f1a","value":532527203205000,"children":[{"label":"\u5c0f\u5174\u5be8\u6751","value":532527203205001},{"label":"\u5c0f\u4e2d\u5be8\u6751","value":532527203205002},{"label":"\u5927\u4e2d\u5be8\u6751","value":532527203205003},{"label":"\u5c0f\u963f\u5ce8\u6751","value":532527203205004},{"label":"\u77f3\u5ca9\u811a\u6751","value":532527203205005},{"label":"\u5c0f\u6cd5\u8863\u6751","value":532527203205006},{"label":"\u6c34\u5934\u6751","value":532527203205007}]},{"label":"\u963f\u5ce8\u6751\u59d4\u4f1a","value":532527203206000,"children":[{"label":"\u963f\u5ce8\u6751","value":532527203206001},{"label":"\u963f\u65e6\u6751","value":532527203206002},{"label":"\u65e7\u5be8\u6751","value":532527203206003},{"label":"\u65b0\u5be8\u6751","value":532527203206004},{"label":"\u6c34\u4e95\u6751","value":532527203206005},{"label":"\u6768\u5bb6\u5be8\u6751","value":532527203206006},{"label":"\u9a6c\u5bb6\u5be8\u6751","value":532527203206007},{"label":"\u7ec6\u8116\u5b50\u6751","value":532527203206008},{"label":"\u5927\u5c71\u6751","value":532527203206009},{"label":"\u6298\u79df\u6751","value":532527203206010},{"label":"\u767d\u77f3\u5ca9","value":532527203206011},{"label":"\u5e84\u79d1\u6751","value":532527203206012},{"label":"\u4e0b\u5be8\u6751","value":532527203206013},{"label":"\u963f\u9c81\u6751","value":532527203206014},{"label":"\u9ebb\u6817\u6811\u6751","value":532527203206015}]}]}]}]
以上便是准备工作。
接着在main_activity.xml中写一个TextView,目的是点击这个TextView之后能够弹出地址选择器,选择地址之后把选择的地址显示在这个TextView上。关于TextView的xml我就不写了,比较简单。点击TextView之后需要弹出地址选择器,这个地址选择器取名叫做AreaPickerView,它是继承自Dialog的。具体代码如下:
import android.content.Context;
import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TextView textView;
//以下跟选择地址有关
private AreaPickerView areaPickerView;
private List<AddressBean> addressBeans;
private int[] i;
private String villageId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=findViewById(R.id.text_view);
Gson gson = new Gson();
addressBeans = gson.fromJson(getJsonFromAssets(MainActivity.this), new TypeToken<List<AddressBean>>() {
}.getType());
areaPickerView = new AreaPickerView(this, R.style.Dialog, addressBeans);
areaPickerView.setAreaPickerViewCallback(new AreaPickerView.AreaPickerViewCallback() {
@Override
public void callback(int... value) {
i=value;
if (value.length == 4) {
textView.setText(addressBeans.get(value[0]).getLabel() + "-" + addressBeans.get(value[0]).getChildren().get(value[1]).getLabel() + "-" + addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getLabel()+"-"+ addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).getLabel());
villageId=addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).getValue();
} else{
}
}
});
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showListDialogvillage();
}
});
}
private void showListDialogvillage() {
areaPickerView.setSelect(i);
areaPickerView.show();
}
public static String getJsonFromAssets(Context context) {
StringBuilder stringBuilder = new StringBuilder();
try {
AssetManager assetManager = context.getAssets();
BufferedReader bf = new BufferedReader(new InputStreamReader(
assetManager.open("region.json")));
String line;
while ((line = bf.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
}
AddressBean 代码:
import java.util.List;
public class AddressBean {
private String label;
private String value;
private boolean status;
private List<CityBean> children;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public List<CityBean> getChildren() {
return children;
}
public void setChildren(List<CityBean> children) {
this.children = children;
}
public class CityBean {
private String label;
private String value;
private boolean status;
private List<AreaBean> children;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public List<AreaBean> getChildren() {
return children;
}
public void setChildren(List<AreaBean> children) {
this.children = children;
}
public class AreaBean {
private String label;
private String value;
private boolean status;
private List<VillageBean> children;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public void setChildren(List<VillageBean> children) {
this.children = children;
}
public List<VillageBean> getChildren() {
return children;
}
public class VillageBean{
private String label;
private String value;
private boolean status;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
}
}
}
R.style.Dialog如下:
<style name="Dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<!--边框-->
<item name="android:windowIsFloating">true</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">false</item>
<!--半透明-->
<item name="android:windowNoTitle">true</item>
<!--无标题-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--背景透明-->
<item name="android:backgroundDimEnabled">true</item>
<!--模糊-->
</style>
R.style.TabLayoutTextStyle代码:
<style name="TabLayoutTextStyle">
<item name="android:textSize">14sp</item>
</style>
R.style.TabLayoutTextStyle代码:
<style name="PickerAnim" parent="@android:style/Animation">
<item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
<item name="android:windowExitAnimation">@anim/push_bottom_out</item>
</style>
ProvinceAdapter代码:
import android.graphics.Color;
import android.support.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
public class ProvinceAdapter extends BaseQuickAdapter<AddressBean, BaseViewHolder> {
public ProvinceAdapter(int layoutResId, @Nullable List<AddressBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, AddressBean item) {
helper.setText(R.id.textview, item.getLabel());
helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
}
}
CityAdapter代码:
import android.graphics.Color;
import android.support.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
public class CityAdapter extends BaseQuickAdapter<AddressBean.CityBean, BaseViewHolder> {
public CityAdapter(int layoutResId, @Nullable List<AddressBean.CityBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, AddressBean.CityBean item) {
helper.setText(R.id.textview, item.getLabel());
helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
}
}
AreaAdapter代码:
import android.graphics.Color;
import android.support.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
public class AreaAdapter extends BaseQuickAdapter<AddressBean.CityBean.AreaBean, BaseViewHolder> {
public AreaAdapter(int layoutResId, @Nullable List<AddressBean.CityBean.AreaBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, AddressBean.CityBean.AreaBean item) {
helper.setText(R.id.textview, item.getLabel());
helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
}
}
VillageAdapter代码:
import android.graphics.Color;
import android.support.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
public class VillageAdapter extends BaseQuickAdapter<AddressBean.CityBean.AreaBean.VillageBean, BaseViewHolder> {
public VillageAdapter(int layoutResId, @Nullable List<AddressBean.CityBean.AreaBean.VillageBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, AddressBean.CityBean.AreaBean.VillageBean item) {
helper.setText(R.id.textview, item.getLabel());
helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
}
}
AreaPickerView代码:
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import java.util.ArrayList;
import java.util.List;
public class AreaPickerView extends Dialog {
private TabLayout tabLayout;
private ViewPager viewPager;
private ImageView ivBtn;
private AreaPickerViewCallback areaPickerViewCallback;
/**
* View的集合
*/
private List<View> views;
/**
* tab的集合
*/
private List<String> strings;
/**
* 省
*/
private List<AddressBean> addressBeans;
/**
* 市
*/
private List<AddressBean.CityBean> cityBeans;
/**
* 区
*/
private List<AddressBean.CityBean.AreaBean> areaBeans;
/**
* 村
*/
private List<AddressBean.CityBean.AreaBean.VillageBean> villageBeans;
private Context context;
private ViewPagerAdapter viewPagerAdapter;
private ProvinceAdapter provinceAdapter;
private CityAdapter cityAdapter;
private AreaAdapter areaAdapter;
private VillageAdapter villageAdapter;
/**
* 选中的区域下标 默认-1
*/
private int provinceSelected = -1;
private int citySelected = -1;
private int areaSelected = -1;
private int villageSelected=-1;
/**
* 历史选中的区域下标 默认-1
*/
private int oldProvinceSelected = -1;
private int oldCitySelected = -1;
private int oldAreaSelected = -1;
private int oldVillageSelected=-1;
private RecyclerView areaRecyclerView;
private RecyclerView cityRecyclerView;
private RecyclerView villageRecyclerView;
private boolean isCreate;
public AreaPickerView(@NonNull Context context, int themeResId, List<AddressBean> addressBeans) {
super(context, themeResId);
this.addressBeans = addressBeans;
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_area_pickerview);
Window window = this.getWindow();
isCreate = true;
/**
* 位于底部
*/
window.setGravity(Gravity.BOTTOM);
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(params);
/**
* 设置弹出动画
*/
window.setWindowAnimations(R.style.PickerAnim);
tabLayout = findViewById(R.id.tablayout);
viewPager = findViewById(R.id.viewpager);
ivBtn = findViewById(R.id.iv_btn);
ivBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
View provinceView = LayoutInflater.from(context)
.inflate(R.layout.layout_recyclerview, null, false);
View cityView = LayoutInflater.from(context)
.inflate(R.layout.layout_recyclerview, null, false);
View areaView = LayoutInflater.from(context)
.inflate(R.layout.layout_recyclerview, null, false);
final View villageView = LayoutInflater.from(context)
.inflate(R.layout.layout_recyclerview, null, false);
final RecyclerView provinceRecyclerView = provinceView.findViewById(R.id.recyclerview);
cityRecyclerView = cityView.findViewById(R.id.recyclerview);
areaRecyclerView = areaView.findViewById(R.id.recyclerview);
villageRecyclerView=villageView.findViewById(R.id.recyclerview);
views = new ArrayList<>();
views.add(provinceView);
views.add(cityView);
views.add(areaView);
views.add(villageView);
/**
* 配置adapter
*/
viewPagerAdapter = new ViewPagerAdapter();
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
/**
* 这句话设置了过后,假如又3个tab 删除第三个 刷新过后 第二个划第三个会有弹性
* viewPager.setOffscreenPageLimit(2);
*/
provinceAdapter = new ProvinceAdapter(R.layout.item_address, addressBeans);
provinceRecyclerView.setAdapter(provinceAdapter);
LinearLayoutManager provinceManager = new LinearLayoutManager(context);
provinceRecyclerView.setLayoutManager(provinceManager);
provinceAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Log.e("AreaPickerView", oldProvinceSelected + "~~~" + oldCitySelected + "~~~" + oldAreaSelected);
cityBeans.clear();
areaBeans.clear();
villageBeans.clear();
addressBeans.get(position).setStatus(true);
provinceSelected = position;
if (oldProvinceSelected != -1 && oldProvinceSelected != provinceSelected) {
addressBeans.get(oldProvinceSelected).setStatus(false);
Log.e("AreaPickerView", "清空");
}
if (position != oldProvinceSelected) {
if (oldCitySelected != -1) {
addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).setStatus(false);
}
if (oldAreaSelected != -1) {
addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).setStatus(false);
}
oldCitySelected = -1;
oldAreaSelected = -1;
oldVillageSelected=-1;
}
cityBeans.addAll(addressBeans.get(position).getChildren());
provinceAdapter.notifyDataSetChanged();
cityAdapter.notifyDataSetChanged();
areaAdapter.notifyDataSetChanged();
villageAdapter.notifyDataSetChanged();
strings.set(0, addressBeans.get(position).getLabel());
if (strings.size() == 1) {
strings.add("请选择");
} else if (strings.size() > 1) {
if (position != oldProvinceSelected) {
strings.set(1, "请选择");
if (strings.size() == 4) {
strings.remove(3);
}
}
}
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(1).select();
oldProvinceSelected = provinceSelected;
}
});
cityBeans = new ArrayList<>();
cityAdapter = new CityAdapter(R.layout.item_address, cityBeans);
LinearLayoutManager cityListManager = new LinearLayoutManager(context);
cityRecyclerView.setLayoutManager(cityListManager);
cityRecyclerView.setAdapter(cityAdapter);
cityAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
areaBeans.clear();
villageBeans.clear();
cityBeans.get(position).setStatus(true);
citySelected = position;
if (oldCitySelected != -1 && oldCitySelected != citySelected) {
addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).setStatus(false);
}
if (position != oldCitySelected) {
if (oldAreaSelected != -1 && cityBeans.get(position).getChildren() != null) {
addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).setStatus(false);
}
oldAreaSelected = -1;
oldVillageSelected=-1;
}
oldCitySelected = citySelected;
if (cityBeans.get(position).getChildren() != null) {
areaBeans.addAll(cityBeans.get(position).getChildren());
cityAdapter.notifyDataSetChanged();
areaAdapter.notifyDataSetChanged();
villageAdapter.notifyDataSetChanged();
strings.set(1, cityBeans.get(position).getLabel());
if (strings.size() == 2) {
strings.add("请选择");
} else if (strings.size() == 4) {
strings.set(3, "请选择");
}
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(2).select();
} else {
oldAreaSelected = -1;
oldVillageSelected=-1;
cityAdapter.notifyDataSetChanged();
areaAdapter.notifyDataSetChanged();
villageAdapter.notifyDataSetChanged();
strings.set(1, cityBeans.get(position).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
dismiss();
areaPickerViewCallback.callback(provinceSelected, citySelected);
}
}
});
areaBeans = new ArrayList<>();
areaAdapter = new AreaAdapter(R.layout.item_address, areaBeans);
LinearLayoutManager areaListManager = new LinearLayoutManager(context);
areaRecyclerView.setLayoutManager(areaListManager);
areaRecyclerView.setAdapter(areaAdapter);
areaAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
villageBeans.clear();
areaBeans.get(position).setStatus(true);
areaSelected = position;
if (oldAreaSelected != -1 && oldAreaSelected != areaSelected) {
addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).setStatus(false);
}
if (position != oldAreaSelected) {
if (oldVillageSelected != -1 && areaBeans.get(position).getChildren() != null) {
addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).getChildren().get(oldVillageSelected).setStatus(false);
}
oldVillageSelected=-1;
}
oldAreaSelected = areaSelected;
if (areaBeans.get(position).getChildren() != null) {
villageBeans.addAll(areaBeans.get(position).getChildren());
areaAdapter.notifyDataSetChanged();
villageAdapter.notifyDataSetChanged();
strings.set(2, areaBeans.get(position).getLabel());
if (strings.size() == 3) {
strings.add("请选择");
} else if (strings.size() == 4) {
strings.set(3, "请选择");
}
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(3).select();
}else {
villageSelected=-1;
areaAdapter.notifyDataSetChanged();
villageAdapter.notifyDataSetChanged();
strings.set(2, areaBeans.get(position).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
dismiss();
areaPickerViewCallback.callback(provinceSelected, citySelected,areaSelected);
}
}
});
/* areaBeans = new ArrayList<>();
areaAdapter = new AreaAdapter(R.layout.item_address, areaBeans);
LinearLayoutManager areaListManager = new LinearLayoutManager(context);
areaRecyclerView.setLayoutManager(areaListManager);
areaRecyclerView.setAdapter(areaAdapter);
areaAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
strings.set(2, areaBeans.get(position).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
areaBeans.get(position).setStatus(true);
areaSelected = position;
if (oldAreaSelected != -1 && oldAreaSelected != position) {
areaBeans.get(oldAreaSelected).setStatus(false);
}
oldAreaSelected = areaSelected;
areaAdapter.notifyDataSetChanged();
dismiss();
areaPickerViewCallback.callback(provinceSelected, citySelected, areaSelected);
}
});
*/
villageBeans = new ArrayList<>();
villageAdapter = new VillageAdapter(R.layout.item_address, villageBeans);
LinearLayoutManager villageListManager = new LinearLayoutManager(context);
villageRecyclerView.setLayoutManager(villageListManager);
villageRecyclerView.setAdapter(villageAdapter);
villageAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
strings.set(3, villageBeans.get(position).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
villageBeans.get(position).setStatus(true);
villageSelected = position;
if (oldVillageSelected != -1 && oldVillageSelected != position) {
villageBeans.get(oldVillageSelected).setStatus(false);
}
oldVillageSelected = villageSelected;
villageAdapter.notifyDataSetChanged();
dismiss();
areaPickerViewCallback.callback(provinceSelected, citySelected, areaSelected,villageSelected);
}
});
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i) {
case 0:
provinceRecyclerView.scrollToPosition(oldProvinceSelected == -1 ? 0 : oldProvinceSelected);
break;
case 1:
cityRecyclerView.scrollToPosition(oldCitySelected == -1 ? 0 : oldCitySelected);
break;
case 2:
areaRecyclerView.scrollToPosition(oldAreaSelected == -1 ? 0 : oldAreaSelected);
break;
case 3:
villageRecyclerView.scrollToPosition(oldVillageSelected == -1 ? 0 : oldVillageSelected);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
class ViewPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return strings.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return strings.get(position);
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(views.get(position));
Log.e("AreaPickView", "------------instantiateItem");
return views.get(position);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(views.get(position));
Log.e("AreaPickView", "------------destroyItem");
}
}
public interface AreaPickerViewCallback {
void callback(int... value);
}
public void setAreaPickerViewCallback(AreaPickerViewCallback areaPickerViewCallback) {
this.areaPickerViewCallback = areaPickerViewCallback;
}
public void setSelect(int... value) {
strings = new ArrayList<>();
if (value == null) {
strings.add("请选择");
if (isCreate) {
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(0).select();
if (provinceSelected != -1)
addressBeans.get(provinceSelected).setStatus(false);
if (citySelected != -1)
addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
cityBeans.clear();
areaBeans.clear();
provinceAdapter.notifyDataSetChanged();
cityAdapter.notifyDataSetChanged();
areaAdapter.notifyDataSetChanged();
}
return;
}
if (value.length == 4) {
strings.add(addressBeans.get(value[0]).getLabel());
strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getLabel());
strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getLabel());
strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(value.length - 1).select();
if (provinceSelected != -1)
addressBeans.get(provinceSelected).setStatus(false);
if (citySelected != -1)
addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
addressBeans.get(value[0]).setStatus(true);
addressBeans.get(value[0]).getChildren().get(value[1]).setStatus(true);
addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).setStatus(true);
addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).setStatus(true);
cityBeans.clear();
cityBeans.addAll(addressBeans.get(value[0]).getChildren());
areaBeans.clear();
areaBeans.addAll(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren());
villageBeans.clear();
villageBeans.addAll(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren());
provinceAdapter.notifyDataSetChanged();
cityAdapter.notifyDataSetChanged();
areaAdapter.notifyDataSetChanged();
villageAdapter.notifyDataSetChanged();
oldProvinceSelected = value[0];
oldCitySelected = value[1];
oldAreaSelected = value[2];
oldVillageSelected=value[3];
villageRecyclerView.scrollToPosition(oldVillageSelected == -1 ? 0 : oldVillageSelected);
}
if (value.length == 3) {
strings.add(addressBeans.get(value[0]).getLabel());
strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getLabel());
strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(value.length - 1).select();
if (provinceSelected != -1)
addressBeans.get(provinceSelected).setStatus(false);
if (citySelected != -1)
addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
addressBeans.get(value[0]).setStatus(true);
addressBeans.get(value[0]).getChildren().get(value[1]).setStatus(true);
addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).setStatus(true);
cityBeans.clear();
cityBeans.addAll(addressBeans.get(value[0]).getChildren());
areaBeans.clear();
areaBeans.addAll(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren());
provinceAdapter.notifyDataSetChanged();
cityAdapter.notifyDataSetChanged();
areaAdapter.notifyDataSetChanged();
oldProvinceSelected = value[0];
oldCitySelected = value[1];
oldAreaSelected = value[2];
villageRecyclerView.scrollToPosition(oldVillageSelected == -1 ? 0 : oldVillageSelected);
}
if (value.length == 2) {
strings.add(addressBeans.get(value[0]).getLabel());
strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getLabel());
tabLayout.setupWithViewPager(viewPager);
viewPagerAdapter.notifyDataSetChanged();
tabLayout.getTabAt(value.length - 1).select();
addressBeans.get(provinceSelected).setStatus(false);
addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
addressBeans.get(value[0]).setStatus(true);
addressBeans.get(value[0]).getChildren().get(value[1]).setStatus(true);
cityBeans.clear();
cityBeans.addAll(addressBeans.get(value[0]).getChildren());
provinceAdapter.notifyDataSetChanged();
cityAdapter.notifyDataSetChanged();
oldProvinceSelected = value[0];
oldCitySelected = value[1];
oldAreaSelected = -1;
cityRecyclerView.scrollToPosition(oldCitySelected == -1 ? 0 : oldCitySelected);
}
}
}
item_address.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:text="xxx"
android:textColor="#444444"
android:textSize="14sp" />
</LinearLayout>
layout_recycler.xml代码:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"/>
</LinearLayout>
dialog_area_pickerview.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="500dp"
android:background="#ffffff"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="15dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="15dp"
android:text="归属地"
android:textColor="#000000"
android:textSize="16sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_btn"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:layout_centerVertical="true"
android:src="@mipmap/close_village" />
</RelativeLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="#ffffff"
app:tabIndicatorColor="#65C15C"
app:tabIndicatorHeight="1dp"
app:tabMode="scrollable"
app:tabRippleColor="@null"
app:tabSelectedTextColor="#65C15C"
app:tabTextAppearance="@style/TabLayoutTextStyle"
app:tabTextColor="#444444" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:overScrollMode="never" />
</LinearLayout>
最后需要在res目录下新建动画文件夹anim:
push_bottom_out和push_bottom_in分别是:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromYDelta="0"
android:toYDelta="50%p" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="50%p"
android:toYDelta="0" />
</set>