根据用户选择更改 EditText

Changing EditText based on user choice

我的应用程序中有一个表单,要求用户输入 his/her 身高和体重。有英制和公制单位两个单选按钮。当用户在单选组中选择英制时,我想显示一个高度编辑文本(米),并为公制选择两个编辑文本(英尺 + 英寸)。我该如何实施?

尝试使用以下代码工作正常。

     //activity.xml
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="15dp">


<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/radioGroup1">

    <RadioButton
        android:id="@+id/imperial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Imperial" />

    <RadioButton
        android:id="@+id/metric"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Metric" />
</RadioGroup>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:orientation="vertical">

    <EditText
        android:id="@+id/height_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:hint="Input height" />

    <EditText
        android:id="@+id/feet_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:layout_marginTop="20dp"
        android:hint="Input Feet" />

    <EditText
        android:id="@+id/inches_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:layout_marginTop="10dp"
        android:hint="Input Inches" />
 </LinearLayout>
 </LinearLayout>


//activity code
class TestActivity : AppCompatActivity() {
private lateinit var heightEdt: EditText
private lateinit var feetEdt: EditText
private lateinit var inchesEdt: EditText
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_test)
    heightEdt = findViewById(R.id.height_et)
    feetEdt = findViewById(R.id.feet_et)
    inchesEdt = findViewById(R.id.inches_et)
    val rg = findViewById<View>(R.id.radioGroup1) as RadioGroup
    rg.setOnCheckedChangeListener { group, checkedId ->
        when (checkedId) {
            R.id.imperial -> {
                heightEdt.isVisible = true
                feetEdt.isVisible = false
                inchesEdt.isVisible = false
            }
            R.id.metric -> {
                heightEdt.isVisible = false
                feetEdt.isVisible = true
                inchesEdt.isVisible = true
            }
        }
    }
  }
 }

同时使用 edittexts(以米为单位)和(以英尺-英寸为单位),其中一个 android:visibility="gone"

当用户选择公制时隐藏另一个编辑文本并显示编辑文本(英尺 + 英寸),当用户选择英制时隐藏另一个并显示高度编辑文本(米)...