1. 程式人生 > >Android仿蘋果實現省市區三級聯動選擇

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()); } }); } }