从早期的时候就比较喜欢拉框架直接用,所以以前记录了很多

关于 CityPicker 框架,我用的时候还是2017年,但是这几年(2022)改变了很多,扩展性也很强,如果要了解最新使用的话,最好还是去 github 看框架的最新使用 ~

地址关联Blog

  • Citypicker 五分钟内快速实现地址选择器
  • 仿京东地址选择器使用指南
  • AndroidPicker 快速实现多样化日期选择器与地址选择器


  • 实现效果
  • 使用说明
  • API注明
  • 回调结果
  • 使用方式


实现效果

早以前的git图,被转存成静态jpg了,无语中...

Android 城市选择库 android地址选择器_CityPicker

使用说明

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>