문제를 추가하는 화면을 만들었다.
먼저 themes.xml 파일을 수정해 앱 전체에 적용될 색상을 바꾸었다.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.CodingTest_Reviewe" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
<item name="colorPrimary">#00b0f0</item>
<item name="colorPrimaryDark">#00b0f0</item>
<item name="android:windowBackground">@color/white</item>
</style>
<style name="Theme.CodingTest_Reviewe" parent="Base.Theme.CodingTest_Reviewe" />
</resources>
문제 추가 화면의 레이아웃과 코드는 다음과 같이 만들었다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:padding="40dp">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ADD TASK"
android:textSize="34sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextTask_add"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="@drawable/input_drawable"
android:ems="10"
android:hint="Task"
android:inputType="text"
android:paddingLeft="10dp"
android:paddingTop="20dp"
android:paddingRight="10dp"
android:paddingBottom="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
<Button
android:id="@+id/buttonAdd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="ADD"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTask_add">
<Button
android:id="@+id/buttonSetTime_add"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:backgroundTint="#00000000"
android:ems="10"
android:inputType="text" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/input_drawable"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingTop="20dp"
android:paddingRight="10dp"
android:paddingBottom="20dp">
<TextView
android:id="@+id/textYear_add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:hint="Date"
android:textSize="18sp" />
<TextView
android:id="@+id/textDate_add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:textSize="18sp" />
</LinearLayout>
</FrameLayout>
<EditText
android:id="@+id/editTextAdd_add"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="@drawable/input_drawable"
android:ems="10"
android:hint="Address"
android:inputType="text"
android:paddingLeft="10dp"
android:paddingTop="20dp"
android:paddingRight="10dp"
android:paddingBottom="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
public class AddActivity extends AppCompatActivity {
EditText editTextTask;
EditText editTextAdd;
Button buttonSetTime;
Button buttonAdd;
TextView textYear;
TextView textDate;
String yearString;
String dateString;
String addString;
DatePickerDialog datePickerDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
// Views
editTextTask = findViewById(R.id.editTextTask_add);
editTextAdd = findViewById(R.id.editTextAdd_add);
buttonSetTime = findViewById(R.id.buttonSetTime_add);
buttonAdd = findViewById(R.id.buttonAdd);
textYear = findViewById(R.id.textYear_add);
textDate = findViewById(R.id.textDate_add);
// init DatePicker
initDatePicker();
// button set Date
buttonSetTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
datePickerDialog.show();
}
});
// button transmit data to ListActivity and finish
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String task = editTextTask.getText().toString();
String date = yearString + " " + dateString;
addString = editTextAdd.getText().toString();
if(task == null || task.equals("")){
Toast.makeText(getApplicationContext(), "할 일을 입력해 주세요.", Toast.LENGTH_SHORT).show();
}else if(yearString == null || yearString.equals("")){
Toast.makeText(getApplicationContext(), "날짜를 입력해 주세요.", Toast.LENGTH_SHORT).show();
}else if(addString == null || addString.equals("")){
Toast.makeText(getApplicationContext(), "주소를 입력해 주세요.", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent();
intent.putExtra("task", task);
intent.putExtra("date", date);
intent.putExtra("address", addString);
setResult(RESULT_OK, intent);
finish();
}
}
});
}
// init DatePicker
private void initDatePicker() {
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month = month + 1;
yearString = Integer.toString(year);
dateString = month + "/" + day;
textYear.setText(yearString);
textDate.setText(dateString);
}
};
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int style = AlertDialog.THEME_HOLO_LIGHT;
datePickerDialog = new DatePickerDialog(this, style, dateSetListener, year, month, day);
}
}
복습할 내용과 날짜, 주소를 입력 받아 저장하도록 만들었다.
날짜를 입력받는 부분은 FrameLayout을 이용해 Button과 TextView가 겹치도록 하여
Button이 눌리면 DatePickerDialog를 띄워 날짜를 선택하고, 선택한 날짜가 TextView에 보이도록 만들었다.


입력상자의 View들의 배경은 직접 만든 drawable 파일을 사용하였다.
