Comments (1)
改造一下就可以了。
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:id="@+id/item"
android:layout_height="match_parent">
</LinearLayout>
basedialog 修改为了下面的。。。
package cn.addapp.pickers.common;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.KeyboardShortcutGroup;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import java.util.List;
import cn.addapp.pickers.util.ScreenUtils;
import cn.addapp.pickers.wheelpicker.R;
public abstract class BasicDialog<V extends View> extends Dialog implements DialogInterface.OnKeyListener,
DialogInterface.OnDismissListener {
public static final int MATCH_PARENT = ViewGroup.LayoutParams.MATCH_PARENT;
public static final int WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT;
protected Activity activity;
protected int screenWidthPixels;
protected int screenHeightPixels;
// private Dialog dialog;
private View view;
private LinearLayout contentLayout;
private boolean isPrepared = false;
public BasicDialog(Activity activity) {
super(activity, R.style.DialogTheme);
this.activity = activity;
DisplayMetrics metrics = ScreenUtils.displayMetrics(activity);
screenWidthPixels = metrics.widthPixels;
screenHeightPixels = metrics.heightPixels;
initDialog();
}
private void initDialog() {
view = View.inflate(activity, R.layout.dialog_custom_layout, null);
contentLayout = view.findViewById(R.id.item);
setContentView(contentLayout);
setCanceledOnTouchOutside(true);//触摸屏幕取消窗体
setCancelable(true);//按返回键取消窗体
setOnKeyListener(this);
setOnDismissListener(this);
Window window = getWindow();
//设置弹出位置
window.setGravity(Gravity.BOTTOM);
//设置对话框大小
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
// setSize(screenWidthPixels, WRAP_CONTENT);
}
/**
* 创建弹窗的内容视图
*
* @return the view
*/
protected abstract V makeContentView();
/**
* 设置弹窗的内容视图之前执行
*/
protected void setContentViewBefore() {
}
/**
* 设置弹窗的内容视图之后执行
*
* @param contentView 弹窗的内容视图
*/
protected void setContentViewAfter(V contentView) {
}
// public void setContentView(View view) {
// contentLayout.removeAllViews();
// contentLayout.addView(view);
// }
public void setFitsSystemWindows(boolean flag) {
contentLayout.setFitsSystemWindows(flag);
}
// public void setCanceledOnTouchOutside(boolean flag) {
// setCanceledOnTouchOutside(flag);
// setCancelable(false);
// }
// public void setCancelable(boolean flag) {
// setCancelable(flag);
// }
// public void setOnDismissListener(final DialogInterface.OnDismissListener onDismissListener) {
//// setOnDismissListener(new DialogInterface.OnDismissListener() {
//// @Override
//// public void onDismiss(DialogInterface dialog) {
//// onDismiss(dialog);
//// onDismissListener.onDismiss(dialog);
//// }
//// });
//// LogUtils.verbose(this, "popup setOnDismissListener");
// }
//
// public void setOnKeyListener(final DialogInterface.OnKeyListener onKeyListener) {
//// setOnKeyListener(new DialogInterface.OnKeyListener() {
//// @Override
//// public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
//// onKey(dialog, keyCode, event);
//// return onKeyListener.onKey(dialog, keyCode, event);
//// }
//// });
//// LogUtils.verbose(this, "popup setOnKeyListener");
// }
/**
* 设置是否需要重新初始化视图,可用于数据刷新
*/
public void setPrepared(boolean prepared) {
isPrepared = prepared;
}
// public boolean isShowing() {
// return isShowing();
// }
public final void shows() {
if (isPrepared) {
show();
showAfter();
return;
}
// LogUtils.verbose(this, "do something before popup show");
setContentViewBefore();
V view = makeContentView();
setContentView(view);// 设置弹出窗体的布局
setContentViewAfter(view);
isPrepared = true;
show();
showAfter();
}
protected void showAfter() {
// LogUtils.verbose(this, "popup show");
}
// public void dismiss() {
// dismissImmediately();
// }
protected final void dismissImmediately() {
if (isShowing())
dismiss();
}
// public boolean onBackPress() {
// dismiss();
// return false;
// }
//
@Override
public final boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
// onBackPress();
dismiss();
}
return false;
}
@Override
public void onDismiss(DialogInterface dialog) {
dismiss();
}
// public Context getContext() {
// return activity;
// }
// public Window getWindow() {
// return this;
// }
/**
* 弹框的内容视图
*/
public View getContentView() {
// IllegalStateException: The specified child already has a parent.
// You must call removeView() on the child's parent first.
return contentLayout.getChildAt(0);
}
/**
* 弹框的根视图
*/
public ViewGroup getRootView() {
return contentLayout;
}
@Override
public void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, @Nullable Menu menu, int deviceId) {
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
}
所有基类就换成这个。。。
show的时候。。。。用shows.........
例如:
fun showdialog(Context context){
val picker = LayoutDatePicker(context)
picker.setCanLoop(true)
picker.setWheelModeEnable(true)
picker.setTopPadding(15)
val config = LineConfig()
config.color = ContextCompat.getColor(context, R.color.line)//线颜色
config.alpha = 140//线透明度
picker.setLineConfig(config)
就是这里的内容了。。。
picker.shows()
}
from android-pickers.
Related Issues (20)
- 内嵌的时候向上滚动循环有问题。。。 HOT 1
- 内嵌布局不能设置文字大小 HOT 1
- SinglePicker选项包含数字和中文时会显示不正确 HOT 1
- 怎么在Fragment中使用各种Picker类? HOT 1
- setRangeStart初始值会出现一瞬间的动画切换 HOT 2
- DateTimePicker setSelectedItem 设置时分无效 HOT 1
- 内嵌的方式,添加 lable之后,文字上面的线条就被分隔了,有没有考虑加一下,或者有什么其他方式吗? HOT 2
- 有没有双列表选择器啊 HOT 2
- DateTimePicker的setDateRangeStart方法有bug HOT 1
- aop拦截点击事件后 此控件被拦截 HOT 1
- 最近在精简和优化代码 发布的版本会是2.0 ,1.0还可以使用 ,请大家耐心等待,谢谢
- 我需要普通模式 HOT 1
- 如何设置每个选项的高度 HOT 1
- DateTimePicker.java发现两处Bug。
- DateTimePicker 设置 当前日期 设置 00 点 时,崩溃 HOT 1
- TimePicker 在2.0.0 设置SelectedItem 无效
- 2.0默认是居中显示的,怎么设置在底部弹出? HOT 1
- TimePicker, HOUR_24 模式下 设置setSelectedItem无效
- 用gradle依赖2.0.0无法下载到最新的代码啊?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-pickers.