Android仿苹果实现省市区三级联动选择
效果图:
一、添加依赖
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) .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()); } }); } }