效果图:
一、添加依赖
dependencies {
·····
implementation 'liji.library.dev:citypickerview:0.7.0'
}
二、这里就不在介绍布局文件了,直接演示实现代码:
package com.example.weicy.myapplication;
import android.content.Context;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
import com.lljjcoder.citypickerview.widget.CityPicker;
public class MainActivity extends AppCompatActivity {
private TextView mSubmitTv;
private TextView new_address_area;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSubmitTv = (TextView) findViewById(R.id.submit_tv);
new_address_area = (TextView) findViewById(R.id.new_address_area);
mSubmitTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//判断输入法的隐藏状态
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.hideSoftInputFromWindow(v.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
selectAddress();//调用CityPicker选取区域
}
}
});
}
private void selectAddress() {
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)//false为三级联动,true为二级联动
.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];
//为TextView赋值
new_address_area.setText(province.trim() + "-" + city.trim() + "-" + district.trim());
}
});
}
}