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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值