###自定义弹出圆角框
不多说,直接上效果图
关键代码:
在自己的style中定义一个style
<!--弹出时间选择的dialog背景--> <style name="mydialog" parent="android:style/Theme.Dialog"> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 没有标题 --> <item name="android:windowNoTitle">true</item> <!-- 背景模糊 --> <item name="android:backgroundDimEnabled">true</item> </style>
编写自定义dialog类,继承自dialog
/** * 描述: 选择日期时间类 * 作者:Marc on 2016/11/3 13:56 * 邮箱:aliali_ha@yeah.net */ public class MyTimePickerDialog extends Dialog { private TextView positiveButton, negativeButton; private View view; private WLQQTimePicker timePickerStart; private Display display; public MyTimePickerDialog(Context context) { super(context, R.style.mydialog); WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); display = windowManager.getDefaultDisplay(); view = LayoutInflater.from(getContext()).inflate(R.layout.item_timepicker, null); LinearLayout lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg); timePickerStart = (WLQQTimePicker) view.findViewById(R.id.timepicker); positiveButton = (TextView) view.findViewById(R.id.confirm); negativeButton = (TextView) view.findViewById(R.id.cancel); timePickerStart.setDate(new Date().getTime()); setContentView(view); // 调整dialog背景大小 lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display .getWidth() * 0.85), LinearLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER)); }
//确定按钮监听
public MyTimePickerDialog setOnPositiveListener(View.OnClickListener listener) {
positiveButton.setOnClickListener(listener);
return this;
}
public WLQQTimePicker getTimePicker() {
if (timePickerStart != null) {
return timePickerStart;
}
return null;
}
/**
* 取消监听按钮
*
* @param listener
*/
public MyTimePickerDialog setOnNegativeListener(View.OnClickListener listener) {
negativeButton.setOnClickListener(listener);
return this;
}
}
- 其中view的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lLayout_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/time_bg"
android:gravity="center"
android:orientation="vertical">
<!-- 这里要注意,wrap_content,会显示不出来,
我这里显示出来时因为我的WLQQTimePicker里面也加载的布局给定了个具体高度值-->
<com.marc.aatmonitol.widget.WLQQTimePicker
android:id="@+id/timepicker"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
圆角drawable
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@android:color/white" /> <corners android:radius="14dp" /> </shape>
使用
dialog = new MyTimePickerDialog(MissonContainerActivity.this); dialog.setCanceledOnTouchOutside(false);//外部不能取消 dialog.setOnNegativeListener(v -> dialog.dismiss() ).setOnPositiveListener(v -> { endTime = dialog.getTimePicker().getmPickerTitle().getText().toString(); showToast(endTime); tvMissionEndTime.setText(endTime); dialog.dismiss(); }).show();
第二章图显示的是recycleivew加4个edittext,每个editeext不抢夺焦点,主要给每个editext设置
android:focusable=”true”android:focusableInTouchMode=”true”
这2个属性