์ค๋์ ๋ด๊ฐ ๋ง๋ค๊ณ ์๋ ํ๋ก์ ํธ์์ ์๋ก ์๊ฒ ๋ radio button ์ด ํด๋ฆญ๋ ๊ฒ์ ํ ์คํธ๋ฅผ ๊ฐ์ ธ์์ textView์ ๋ณด์ฌ์ฃผ๋ ์์ ๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ๋ค.
๋จผ์ ๋๋ ์ปค์คํ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ , ๊ทธ๊ฒ์ view binding์ ํตํด ์์ ๋ฅผ ๋ง๋ค์๊ธฐ ๋๋ฌธ์
build.gradle์ ์ถ๊ฐ๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
build.gradle(app)
plugin {
...
}
android {
...
buildFeatures {
viewBinding = true
}
}
dependencies {
....
}
๋ทฐ ๋ฐ์ธ๋ฉ์ ๋ํ ๋ฐฉ๋ฒ์ ์ฌ๊ธฐ์ ์์ธํ ์๋ ค์ฃผ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ๊ณต๋ถํ๊ณ ์ค์๊ธธ ๋ฐ๋๋ค.
๊ทธ ๋ค์ dialog์ ์ฐ์ผ ๋ ์ด์์์ ๋ง๋ค์ด ์ฃผ๋๋ก ํ์
custom_dualog_set_standard.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/main_color"
android:gravity="center"
android:textSize="35sp"
android:text="๊ธฐ์ค ์ ํ"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ ํ"
android:textSize="20sp"
android:layout_marginStart="30dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"/>
<RadioGroup
android:id="@+id/standard_radio_group1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="5dp"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="์์" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="์๋จ" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="์ด๋" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="๊ธ์" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="10dp"
android:text="์์ " />
</RadioGroup>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="๊ธฐ์ค"
android:textSize="20sp"
android:layout_marginStart="30dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"/>
<RadioGroup
android:id="@+id/standard_radio_group2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_gravity="center"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="์์" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="์ต์ ์" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="์ค๋๋์" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="์ข์์์" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:text="์ถ์ฒ์" />
</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="20dp"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/standard_apply"
android:layout_width="150dp"
android:layout_height="40dp"
android:background="@drawable/button_background"
android:layout_marginEnd="20dp"
android:text="์ ์ฉ"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/standard_cancel"
android:layout_width="150dp"
android:layout_height="40dp"
android:background="@drawable/button_background2"
android:text="์ทจ์"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
fragment์์ ๊ธฐ๋ฅ ๊ตฌํ
์ด์ fragment์ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณด๋๋ก ํ์.
class BoardFragment: Fragment() {
...
// dialog ๊ธฐ๋ฅ ๊ตฌํ
private fun setStandard() {
dialog = Dialog(requireContext())
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
val dialogBinding: CustomDialogSetStandardBinding = CustomDialogSetStandardBinding.inflate(
LayoutInflater.from(context))
dialog.setContentView(dialogBinding.root)
dialog.show()
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialogBinding.standardApply.setOnClickListener {
val selectedRadio1 = dialogBinding.standardRadioGroup1.checkedRadioButtonId
val selectedRadio2 = dialogBinding.standardRadioGroup2.checkedRadioButtonId
Log.d("Diet Management", "setStandard selected radio button: $selectedRadio1, $selectedRadio2")
val radioBtn1 = dialog.findViewById<View>(selectedRadio1) as RadioButton?
val radioBtn2 = dialog.findViewById<View>(selectedRadio2) as RadioButton?
Log.d("Diet Management", "setStandard: ${radioBtn1?.text}/${radioBtn2?.text}")
binding.standardTextview.text = "${radioBtn1?.text}/${radioBtn2?.text}"
dialog.dismiss()
}
dialogBinding.standardCancel.setOnClickListener {
dialog.dismiss()
}
}
}
1. view binding ์ถ๊ฐ
val dialogBinding: CustomDialogSetStandardBinding = CustomDialogSetStandardBinding.inflate(
LayoutInflater.from(context))
2. dialog ๋ฐฐ๊ฒฝ ์ง์ฐ๊ธฐ
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
์ ์ฝ๋๋ฅผ ์ฐ์ง ์์ผ๋ฉด ๋ค์ด์ผ๋ก๊ทธ์ ํฐ์ ๋ฐฐ๊ฒฝ์ด ์ง์์ง์ง ์๋๋ค.
3. radio button ํด๋ฆญ id
val selectedRadio1 = dialogBinding.standardRadioGroup1.checkedRadioButtonId
val selectedRadio2 = dialogBinding.standardRadioGroup2.checkedRadioButtonId
4. ํ ์คํธ ๊ฐ ์ป์ด์ค๊ธฐ
val radioBtn1 = dialog.findViewById<View>(selectedRadio1) as RadioButton?
val radioBtn2 = dialog.findViewById<View>(selectedRadio2) as RadioButton?
binding.standardTextview.text = "${radioBtn1?.text}/${radioBtn2?.text}"
๊ฒฐ๊ณผ ํ๋ฉด
ํด๋ฆญ๋ ๋ฒํผ๋ค์ text๊ฐ textView์ ์ ์ฉ ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
'๐ฑ| Android > ๐ | ๊ธฐ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android, Kotlin] editText์ toggle icon์ด ๋ฐ๋๋ก ๋์์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ (2) | 2022.08.31 |
---|---|
[Android/Kotlin] retrofit2 ์ ๋ฆฌ (0) | 2022.05.13 |
[Android] ํ๋ฉด ์ด๋ ๋ฐฉ๋ฒ ์ ๋ฆฌ (0) | 2022.04.12 |
[Android] Clean Architecture ๊ธฐ๋ก (0) | 2022.04.01 |
[Android] dagger hilt ๊ธฐ๋ก (0) | 2022.03.29 |