1.职业/性别 选择器
①.摆中间的那种,看起来很随意的那种,有点丑那种
compile 'com.contrarywind:Android-PickerView:4.1.3'
private ImageView image;
private OptionsPickerView<Object> pvCustomOptions;
private List<Object> zhiyeList=new ArrayList<>();
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
zhiyeList.add("杀猪的");
zhiyeList.add("卖菜的");
zhiyeList.add("吃黄瓜的");
zhiyeList.add("拉皮条的");
zhiyeList.add("跳大神的");
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initCustomOptionPicker();
}
});
setExitSharedElementCallback(new SharedElementCallback() {
@Override
public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {
super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots);
Toast.makeText(MainActivity.this, "回来了", Toast.LENGTH_SHORT).show();
}
});
}
private void initView() {
image = (ImageView) findViewById(R.id.image);
}
private void initCustomOptionPicker() {//条件选择器初始化,自定义布局
/**
* @description
*
* 注意事项:
* 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。
* 具体可参考demo 里面的两个自定义layout布局。
*/
pvCustomOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int option2, int options3, View v) {
//返回的分别是三个级别的选中位置
Toast.makeText(MainActivity.this, ""+zhiyeList.get(options1), Toast.LENGTH_SHORT).show();
}
})
.setLayoutRes(R.layout.custom_zhiye_select, new CustomListener() {
@Override
public void customLayout(View v) {
final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
tvSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomOptions.returnData();
pvCustomOptions.dismiss();
}
});
ivCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomOptions.dismiss();
}
});
}
})
.isDialog(true)
.build();
pvCustomOptions.setPicker(zhiyeList);//添加数据
pvCustomOptions.show();
}
需要个 xml
不要动,都粘,粘就对了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@android:color/darker_gray">
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@android:color/darker_gray" />
<ImageView
android:id="@+id/iv_cancel"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_centerVertical="true"
android:layout_marginLeft="17dp"
android:padding="8dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="17dp"
android:padding="8dp"
android:text="完成"
android:textSize="18sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@android:color/darker_gray"/>
</RelativeLayout>
<!--此部分需要完整复制过去,删减或者更改ID会导致初始化找不到内容而报空-->
<LinearLayout
android:id="@+id/optionspicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="horizontal">
<com.contrarywind.view.WheelView
android:id="@+id/options1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<com.contrarywind.view.WheelView
android:id="@+id/options2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<com.contrarywind.view.WheelView
android:id="@+id/options3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
颜色都是自定义
②.躲底下的
OnOptionsSelectListener onOptionsSelectListener = new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
Toast.makeText(MainActivity.this, "" + zhiyeList.get(options1), Toast.LENGTH_SHORT).show();
}
};
OptionsPickerBuilder optionsPickerBuilder = new OptionsPickerBuilder(this, onOptionsSelectListener);
final OptionsPickerView<Object> build = optionsPickerBuilder.build();
optionsPickerBuilder.setLayoutRes(R.layout.custom_zhiye_select, new CustomListener() {
@Override
public void customLayout(View v) {
//自定义布局中的控件初始化及事件处理
final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
tvSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomOptions.dismiss();
}
});
ivCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomOptions.dismiss();
}
});
}
});
build.setPicker(zhiyeList);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
build.show();
}
});
3.时间选择器 安卓自带
ctrl+c
final int DATE_DIALOG = 1;
int mYear, mMonth, mDay;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG:
return new DatePickerDialog(this, mdateListener, mYear, mMonth, mDay);
}
return null;
}
private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
display();
}
};
/**
* 设置日期 利用StringBuffer追加
*/
public void display() {
tvdate.setText(new StringBuffer().append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append(" "));
}
//调用方法 手机的不太一样 不过都挺好
showDialog(DATE_DIALOG);
4.地址选择器
这里只能具体到区 你可以加详细地址...
现在这个pickerview 其实也有这个地址的 不过我就不用
//城市选择器
compile 'liji.library.dev:citypickerview:3.1.8'
//申明对象
CityPickerView mPicker = new CityPickerView();
mPicker.init(this);
private void selectCity() {
//添加默认的配置,不需要自己定义
CityConfig cityConfig = new CityConfig.Builder().build();
mPicker.setConfig(cityConfig);
//监听选择点击事件及返回结果
mPicker.setOnCityItemClickListener(new OnCityItemClickListener() {
@Override
public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {
tvdate.setText(province.getName() + city.getName() + district.getName());
}
@Override
public void onCancel() {
}
});
//显示
mPicker.showCityPicker();
}
OK
最后一个
compile 'com.github.loonggg:BottomSheetPopupDialog:v1.0'
maven { url "https://jitpack.io" }
View dialogView = LayoutInflater.from(this).inflate(R.layout.layout_bottom_shopdetail, null);
ShareBottomPopupDialog shareBottomPopupDialog = new ShareBottomPopupDialog(this, dialogView);f
shareBottomPopupDialog.showPopup(rela_bottom);
这个一般是activity 走完了 他才可以弹的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rela_bottom"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:background="#f00"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:textSize="30dp"
android:textColor="#fff"
android:text="老子是哦从 底下弹出来的"
android:layout_width="match_parent"
android:layout_height="300dp" />
</RelativeLayout>
牛逼 不? 无私 不?