Android使用開源框架Citypickerview實現省市區三級聯動效果

前兩天在項目中用到了添加地址的功能,想着這個應該網上有現成的輪子可以用,於是就找了一下,找到一個開源的框架Citypickerview,試了一下挺好用的,使用非常方便,分享給大家:github地址:點擊打開鏈接

1.添加依賴:

compile 'liji.library.dev:citypickerview:0.7.0'

2.佈局文件:

非常簡單,就2個TextView來顯示就可以了

<LinearLayout
        android:layout_marginTop="50dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="地址:"
            />

        <TextView
            android:id="@+id/address"
            android:background="#ff00"
            android:textColor="#000"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>

3.在自己相應的Activity中使用地址選擇器,我的是在ActivityDemo中,整個ActivityDemo的代碼如下:

package com.example.os.nestedscrollingdemo.view;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import com.example.os.nestedscrollingdemo.R;
import com.lljjcoder.citypickerview.widget.CityPicker;

/**
 * Created by OS on 2018/3/13.
 */

public class ActivityDemo extends AppCompatActivity implements View.OnClickListener {


    private TextView mAddress;
    /**
     * 選取地址
     */


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
    }

    private void initView() {
        mAddress = findViewById(R.id.address);
        mAddress.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
//        chooseArea(v);
        selectAddress();
    }

    //Texview的點擊事件
//    public void chooseArea(View view) {
//        //判斷輸入法的隱藏狀態
//        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//        if (imm.isActive()) {
//            imm.hideSoftInputFromWindow(view.getWindowToken(),
//                    InputMethodManager.HIDE_NOT_ALWAYS);
//            selectAddress();//調用CityPicker選取區域
//        }
//    }

    private void selectAddress() {
        CityPicker cityPicker = new CityPicker.Builder(ActivityDemo.this)
                .textSize(14)
                .title("地址選擇")
                .titleBackgroundColor("#FFFFFF")
//                .titleTextColor("#696969")
                .confirTextColor("#696969")
                .cancelTextColor("#696969")
                .province("北京市")
                .city("北京市")
                .district("朝陽區")
                .textColor(Color.parseColor("#000000"))
                .provinceCyclic(true)
                .cityCyclic(false)
                .districtCyclic(false)
                .visibleItemsCount(7)
                .itemPadding(15)
                .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賦值
                mAddress.setText(province.trim()+ city.trim()+ district.trim());
            }
        });
    }


}

4.ok了,上述的代碼就能實現效果了,是不是非常簡單呢。在這裏提一下,我的在上面的設置標題顏色的時候報錯了,所以我註釋掉了,不影響使用。

本文章根據原作者內容改編而來,如有雷同,敬請諒解!

轉載自:http://www.cnblogs.com/panhouye/archive/2017/03/08/6519582.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章