diff --git a/androidform/src/main/java/com/github/androiddevfr/form/rows/ToggleRow.kt b/androidform/src/main/java/com/github/androiddevfr/form/rows/ToggleRow.kt new file mode 100644 index 0000000..a28a5c0 --- /dev/null +++ b/androidform/src/main/java/com/github/androiddevfr/form/rows/ToggleRow.kt @@ -0,0 +1,66 @@ +package com.github.androiddevfr.form.rows + +import android.content.Context +import android.view.ViewGroup +import android.widget.RelativeLayout +import android.widget.ToggleButton +import com.github.androiddevfr.form.core.DimensionUtils + +class ToggleRow(context: Context): AbstractTitleRow(context) { + + var toggleView: ToggleButton? = null + var textOff: String = "" + var textOn: String = "" + private var value: Boolean? = null + + override fun value(): Boolean? = value + + var customizeToggleView: ((ToggleRow, ToggleButton) -> Unit) = { _, _ -> } + + init { + onCreateView { + val layout = RelativeLayout(context) + + //Generated the Toggle + createToggle() + val toggleLayoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + toggleLayoutParams.leftMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_LEFT) + toggleLayoutParams.topMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_TOP) + toggleLayoutParams.bottomMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_BOTTOM) + toggleLayoutParams.rightMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_RIGHT) + toggleLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL) + toggleLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT) + toggleView?.layoutParams = toggleLayoutParams + layout.addView(toggleView) + + + //Generated the Title + createTitleView(TITLE_VIEW_ID) + val titleLayoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + titleLayoutParams.leftMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_LEFT) + titleLayoutParams.topMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_TOP) + titleLayoutParams.bottomMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_BOTTOM) + titleLayoutParams.rightMargin = DimensionUtils.dpToPx(DEFAULT_MARGIN_RIGHT) + titleLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL) + titleLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT) + titleView?.layoutParams = titleLayoutParams + layout.addView(titleView) + + layout + } + } + + /** + * Use this lambda to change the visual aspect of the ToggleView + */ + private fun createToggle(): ToggleButton { + toggleView = ToggleButton(context) + toggleView?.text = textOff + toggleView?.textOn = textOn + toggleView?.textOff = textOff + customizeToggleView.invoke(this, toggleView as ToggleButton) + toggleView?.setOnCheckedChangeListener{ _, isChecked -> value = isChecked } + return toggleView as ToggleButton + } + +} \ No newline at end of file diff --git a/androidform/src/main/java/com/github/androiddevfr/form/section/Section.kt b/androidform/src/main/java/com/github/androiddevfr/form/section/Section.kt index d93e5a2..8801d6d 100644 --- a/androidform/src/main/java/com/github/androiddevfr/form/section/Section.kt +++ b/androidform/src/main/java/com/github/androiddevfr/form/section/Section.kt @@ -103,6 +103,19 @@ class Section(private val context: Context, var title: String) { return row(SeekBarRow(context), block) } + /** + * Add a row with title and a Toggle + * + * ---------------------------------------- + * | | + * | TITLE Toggle (On/Off) | + * | | + * ---------------------------------------- + */ + fun toggleRow(block: (ToggleRow.() -> Unit)): Section { + return row(ToggleRow(context), block) + } + /** * Add a single/multi choice row) * diff --git a/sample-kt/src/main/java/com/github/androiddevfr/form/kotlin/sample/MainActivity.kt b/sample-kt/src/main/java/com/github/androiddevfr/form/kotlin/sample/MainActivity.kt index 6e4dbc9..48366a7 100644 --- a/sample-kt/src/main/java/com/github/androiddevfr/form/kotlin/sample/MainActivity.kt +++ b/sample-kt/src/main/java/com/github/androiddevfr/form/kotlin/sample/MainActivity.kt @@ -6,6 +6,7 @@ import android.util.Log import com.github.androiddevfr.form.Form import com.github.androiddevfr.form.rows.DateRow import com.github.androiddevfr.form.rows.TextRow +import com.github.androiddevfr.form.rows.ToggleRow import kotlinx.android.synthetic.main.activity_main.getValues import java.util.Date @@ -78,6 +79,15 @@ class MainActivity : AppCompatActivity() { value = 33 } } + section("Section 4") { + id = 7 + toggleRow { + id = 8 + title = "Toggle row" + textOff = "Off" + textOn = "On" + } + } } getValues.setOnClickListener {