根据用户选择更改 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"
当用户选择公制时隐藏另一个编辑文本并显示编辑文本(英尺 + 英寸),当用户选择英制时隐藏另一个并显示高度编辑文本(米)...
我的应用程序中有一个表单,要求用户输入 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"
当用户选择公制时隐藏另一个编辑文本并显示编辑文本(英尺 + 英寸),当用户选择英制时隐藏另一个并显示高度编辑文本(米)...