今日计划
继续简约记账app的开发,预计完成主页面控及数据的插入,以及记一笔页面的完善。
今日完成情况
- 完成了添加备注页面的dialog优化,页面具体效果如下,宽度和屏幕保持一致,下面的系统软键盘也可以弹出来:
在BeiZhuDialog类中加入如下代码,这两个方法之前没有接触过,需要好好理解记忆,
/**
* 设置Dialog尺寸和屏幕尺寸一致
*/
public void setDialogSize() {
//获取当前窗口对象
Window window = getWindow();
//获取窗口对象的参数
WindowManager.LayoutParams wlp = window.getAttributes();
//获取屏幕宽度
Display d = window.getWindowManager().getDefaultDisplay();
wlp.width = (int)(d.getWidth()); //对话框窗口为屏幕窗口
wlp.gravity = Gravity.BOTTOM;
window.setBackgroundDrawableResource(android.R.color.transparent);
window.setAttributes(wlp);
handler.sendEmptyMessageDelayed(1,100);
}
Handler handler = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
//自动弹出软键盘的方法
InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
}
};
- 完成时间选择对话框的编写,效果如下:
代码如下(隐藏日历控件头布局比较麻烦):
/**
* 在记录页面弹出对话框
*/
public class SelectTimeDialog extends Dialog implements View.OnClickListener {
EditText hourEt,minuteEt;
DatePicker datePicker;
Button ensureBtn, cancelBtn;
public interface OnEnsureListener{
public void onEnsure(String time,int year,int month,int day);
}
OnEnsureListener onEnsureListener;
public void setOnEnsureListener(OnEnsureListener onEnsureListener) {
this.onEnsureListener = onEnsureListener;
}
public SelectTimeDialog(@NonNull Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_time);
hourEt = findViewById(R.id.dialog_time_et_hour);
minuteEt = findViewById(R.id.dialog_time_et_minute);
datePicker = findViewById(R.id.dialog_time_dp);
ensureBtn = findViewById(R.id.dialog_time_btn_ensure);
cancelBtn = findViewById(R.id.dialog_time_btn_cancel);
ensureBtn.setOnClickListener(this);
cancelBtn.setOnClickListener(this);
hideDatePickerHeader();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.dialog_time_btn_cancel:
cancel();
b