【发布时间】:2016-03-19 00:25:17
【问题描述】:
我在 Android 中有一个表单,用户必须在其中输入他们的身高。但是,我有一个微调器,用户可以在其中选择测量单位(英尺/英寸和厘米),然后是 EditText,他们可以在其中输入实际值
如果用户选择厘米作为他们的单位,我想要一个EditText。如果他们选择英尺/英寸,我想显示 2 个EditText 字段
我目前处理此问题的方式似乎效率低下。我有 3 个EditText 字段:1 个用于厘米,1 个用于英尺,1 个用于英寸
然后我将onItemSelected 侦听器附加到微调器。如果用户选择 cm 选项,我在 cm EditText 上 setVisibility(view.VISIBLE),在英尺和英寸 EditText 字段上 setVisibility(view.INVISIBLE)。如果他们选择英尺/英寸选项,我只需反向显示可见性并显示/隐藏相应的字段。
是否有更合适的方法来处理需要不同数量的EditText 字段的多种单元类型?
注意:我的 EditText 实际上包含在 TextInputLayouts 中,因此我可以在提示中获取 Material 动画,并在 TextInputLayouts 上设置可见性。
代码如下所示:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//Height unit spinner
String [] values = {"cm","ft"};
Spinner spinner = (Spinner) view.findViewById(R.id.input_height_spinner);
spinner.setOnItemSelectedListener(this);
ArrayAdapter<String> LTRadapter = new ArrayAdapter<>(this.getActivity(), android.R.layout.simple_spinner_item, values);
LTRadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(LTRadapter);
heightCMWrapper = (TextInputLayout) view.findViewById(R.id.input_height_cm_wrapper);
heightFTWrapper = (TextInputLayout) view.findViewById(R.id.input_height_ft_wrapper);
heightINWrapper = (TextInputLayout) view.findViewById(R.id.input_height_in_wrapper);
//Some other code for inflating layout etc.
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
heightCMWrapper.setVisibility(view.VISIBLE);
heightCMWrapper.setHint("Height (cm)");
heightCMWrapper.requestFocus();
heightFTWrapper.setVisibility(view.INVISIBLE);
heightFTWrapper.setHint("");
heightINWrapper.setVisibility(view.INVISIBLE);
heightINWrapper.setHint("");
break;
case 1:
heightCMWrapper.setVisibility(view.INVISIBLE);
heightCMWrapper.setHint("");
heightFTWrapper.setVisibility(view.VISIBLE);
heightFTWrapper.setHint("Feet");
heightFTWrapper.requestFocus();
heightINWrapper.setVisibility(view.VISIBLE);
heightINWrapper.setHint("Inches");
break;
}
}
【问题讨论】:
标签: android android-layout android-edittext android-spinner android-textinputlayout