Android地址选择器,解决Gradle引入不了CityPicker依赖的问题

因删除了gitee图床,图片不能正常显示,详细查看github源码

1. 概述

解决Gradle下载不了CityPicker依赖的问题

citypicker源码github地址:crazyandcoder/citypicker

2. 实现效果

img

3. 实现方法

(1)环境配置

  • 在setting.gradle文件中配置jitpack的maven地址
maven {url 'https://jitpack.io'}

image-20220310184208003

  • 选择官方最新版本的依赖
implementation 'com.github.crazyandcoder:citypicker:6.0.2'

在app的build.gradle文件的dependencies部分引入

image-20220310183926029

  • 在AndroidManifest.xml文件中添加tools替换掉citypicker中冲突的部分
xmlns:tools="http://schemas.android.com/tools"
        tools:replace="android:theme"

image-20220310201401610

(2)代码实现

新版本的citypicker与低版本的用法有些许差别,因为在类名和方法名上有所不同

layout部分
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    
    <TextView
        android:id="@+id/item_city"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:gravity="center"
        android:text="请选择地址"
        android:textSize="18sp"
        android:textStyle="bold"/>

</LinearLayout>
java部分
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.lljjcoder.Interface.OnCityItemClickListener;
import com.lljjcoder.bean.CityBean;
import com.lljjcoder.bean.DistrictBean;
import com.lljjcoder.bean.ProvinceBean;
import com.lljjcoder.citywheel.CityConfig;
import com.lljjcoder.style.citypickerview.CityPickerView;


public class MainActivity extends AppCompatActivity {

    // 创建CityPicker对象,有别于低版本的CityPicker
    CityPickerView mPicker=new CityPickerView();
    private TextView cityText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mPicker.init(this); // 预先加载全部数据,必须执行
        cityText=findViewById(R.id.item_city); // 找到页面上的item_city组件
        cityText.setOnClickListener(new View.OnClickListener() { // 设置TextView组件的点击监听
            @Override
            public void onClick(View view) {
                initCityPicker(); // 初始化CityPicker
                mPicker.showCityPicker(); // 展示CityPicker
            }
        });
    }

    public void initCityPicker() {
        CityConfig cityConfig = new CityConfig.Builder().build(); // 采用默认配置,详细属性配置在下面
        mPicker.setConfig(cityConfig); // CityPicker设置配置属性

        mPicker.setOnCityItemClickListener(new OnCityItemClickListener() { // CityPicker设置点击事件监听
            // 成功选择信息后执行该方法
            @Override
            public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {
                // 省份province,城市city,地区district   
                
                // 给TextView组件添加所选择的地址信息
                cityText.setText(String.format("%s %s %s", province, city, district));
            } 
            // 点取消时执行该方法
            @Override
            public void onCancel() {} 
        });
    }
}

(3)补充部分

CityConfig详细属性信息,可以自定义

        CityConfig cityConfig = new CityConfig.Builder()
                .title("选择城市")//标题
                .titleTextSize(18)//标题文字大小
                .titleTextColor("#585858")//标题文字颜  色
                .titleBackgroundColor("#E9E9E9")//标题栏背景色
                .confirTextColor("#585858")//确认按钮文字颜色
                .confirmText("ok")//确认按钮文字
                .confirmTextSize(16)//确认按钮文字大小
                .cancelTextColor("#585858")//取消按钮文字颜色
                .cancelText("cancel")//取消按钮文字
                .cancelTextSize(16)//取消按钮文字大小
                .setCityWheelType(CityConfig.WheelType.PRO_CITY_DIS)//显示类,只显示省份一级,显示省市两级还是显示省市区三级
                .showBackground(true)//是否显示半透明背景
                .visibleItemsCount(7)//显示item的数量
                .province("浙江省")//默认显示的省份
                .city("杭州市")//默认显示省份下面的城市
                .district("滨江区")//默认显示省市下面的区县数据
                .provinceCyclic(true)//省份滚轮是否可以循环滚动
                .cityCyclic(true)//城市滚轮是否可以循环滚动
                .districtCyclic(true)//区县滚轮是否循环滚动
                .setCustomItemTextViewId(R.id.item_city)//自定义item布局里面的textViewid
                .drawShadows(false)//滚轮不显示模糊效果
                .setLineColor("#03a9f4")//中间横线的颜色
                .setLineHeigh(5)//中间横线的高度
                .setShowGAT(true)//是否显示港澳台数据,默认不显示
                .build();
posted @ 2022-03-10 19:06  _心存高远  阅读(1378)  评论(0编辑  收藏  举报