【发布时间】:2015-06-05 16:20:43
【问题描述】:
我正在开发一个 android 应用程序,在该应用程序中,我正在根据 json 响应动态创建 RadioButton、CheckBox、EditText 等视图,并以编程方式使用 Java 添加到 LinearLayout。
在 micromax A114 中,我得到了预期的结果!
。
但是当我使用Samsung note edge 进行测试时,它会崩溃并且看起来不太好。
.
这是我使用的编码
for (int dynamicViews = 0; dynamicViews < FormFieldsController
.initializeFormFieldsController().initializeFormFields().size(); dynamicViews++){
int fieldType = Integer.parseInt(formFields.getFieldType());
switch (fieldType) {
case VIEW_TYPE_EDIT_TEXT:
LinearLayout fieldLabel = new LinearLayout(context);
fieldLabel.setOrientation(LinearLayout.VERTICAL);
params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, 40);
params.setMargins(10, 10, 0, 0);
TextView label = new TextView(context);
label.setBackground(context.getResources().getDrawable(
R.drawable.text_area_field_title_background));
label.setTextColor(Color.parseColor("#FFFFFF"));
label.setPadding(10, 5, 10, 0);
label.setText(formFields.getFieldName());
label.setLayoutParams(params);
fieldLabel.addView(label);
params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 200);
final EditText editText = new EditText(context);
editText.setGravity(Gravity.CENTER);
params.setMargins(10, 0, 10, 10);
editText.setLayoutParams(params);
editText.setBackground(context.getResources().getDrawable(
R.drawable.cornerless_rc_bg));
editText.setHint("Type Here ...");
if (formFields.getCrfFormField().getFieldValue() != null) {
editText.setText(formFields.getCrfFormField()
.getFieldValue());
}
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
FormFieldsController.initializeFormFieldsController()
.initializeFormFields().get(position)
.getCrfFormField()
.setFieldValue(editText.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// TODO Auto-generated method stub
}
});
fieldLabel.addView(editText);
container.addView(fieldLabel);
break;
}
}
【问题讨论】:
-
View 的高度是固定的 (40),但像素密度在所有设备上并不相同。也许您需要根据屏幕密度动态计算高度?