从早期的时候就比较喜欢拉框架直接用,所以以前记录了很多
关于 CityPicker 框架,我用的时候还是2017年,但是这几年(2022)改变了很多,扩展性也很强,如果要了解最新使用的话,最好还是去 github 看框架的最新使用 ~
地址关联Blog
- Citypicker 五分钟内快速实现地址选择器
- 仿京东地址选择器使用指南
- AndroidPicker 快速实现多样化日期选择器与地址选择器
- 实现效果
- 使用说明
- API注明
- 回调结果
- 使用方式
实现效果
早以前的git图,被转存成静态jpg了,无语中...
使用说明
API注明
方法 | 含义 |
textSize | 滚轮文字的大小,int 类型,默认为18 |
title | 选择器标题,默认为“选择地区” |
backgroundPop | 背景,默认为半透明,16位进制颜色代码,带alpha值,如0xa0ffffff |
titleBackgroundColor | 标题栏背景,默认为灰色,#C7C7C7 |
confirTextColor | 确认按钮字体颜色,默认为系统的colorPrimary颜色值 |
cancelTextColor | 取消按钮字体颜色,默认为系统的colorPrimary颜色值 |
province | 默认的显示省份,显示选择器后直接定位的item位置 |
city | 默认的显示市,显示选择器后直接定位的item位置 |
district | 默认的显示区,显示选择器后直接定位的item位置 |
textColor | 滚轮文字的颜色 ,int 类型,默认为0xFF585858 |
provinceCyclic | 省份的滚轮是否循环滚动 |
cityCyclic | 市的滚轮是否循环滚动 |
districtCyclic | 区的滚轮是否循环滚动 |
visibleItemsCount | 滚轮显示的item个数,int 类型,默认为5个 |
itemPadding | 滚轮item间距,默认为5dp |
onlyShowProvinceAndCity(boolean flag) | 是否只显示省份和市的两级联动,去掉区或者县 |
titleTextColor | (标题文字颜色,默认为 #E9E9E9) |
回调结果
只需传入Context便可获取选择的省市区域的信息,结果返回四项,可根据自己的实际需求进行选择。
回调 | 含义 |
citySelected[0] | 省份信息 |
citySelected[1] | 城市信息 |
citySelected[2] | 区县信息 |
citySelected[3] | 邮编信息 |
使用方式
- build引用(
2017的版本,2022我去看了下 版本已经到6.0.2了,所以最好去看原作者的使用方式
)
compile 'liji.library.dev:citypickerview:0.7.0'
- MainActivity
package com.example.dow.citypickerview;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.lljjcoder.citypickerview.widget.CityPicker;
public class MainActivity extends AppCompatActivity {
private TextView mContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView mBtn = (TextView) findViewById(R.id.tv_btn);
mContent = (TextView) findViewById(R.id.tv_content);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAddress();
}
});
}
private void getAddress() {
CityPicker cityPicker=new CityPicker.Builder(MainActivity.this)
.textSize(14)
.title("地址选择")
.titleBackgroundColor("#FFFFFF")
.confirTextColor("#696969")
.cancelTextColor("#696969")
.province("江苏省")
.city("常州市")
.district("天宁区")
.textColor(Color.parseColor("#000000"))
.provinceCyclic(true)
.cityCyclic(false)
.districtCyclic(false)
.visibleItemsCount(7)
.itemPadding(10)
.onlyShowProvinceAndCity(false)
.build();
cityPicker.show();
//监听事件,获取结果
cityPicker.setOnCityItemClickListener(new CityPicker.OnCityItemClickListener() {
@Override
public void onSelected(String... citySelected) {
//省份
String province = citySelected[0];
//城市
String city =citySelected[1];
//区县(如果设定了两级联动,那么该项返回空)
String district = citySelected[2];
//邮编
String code = citySelected[3];
//为展示区赋值
mContent.setText(province.trim() + "-" + city.trim() + "-" + district.trim());
}
});
}
}
- activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dow.citypickerview.MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_btn"
android:gravity="center"
android:padding="5dp"
android:text="地址选择器" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_content"
android:gravity="center"
android:padding="5dp"
/>
</LinearLayout>