以编程方式结合 Textview 和 EditText 创建自定义字段
Create Custom Fields Programmatically combining Textview and EditText
我正在根据 API 的 JSON 响应接收的字符串制作动态表单。
在这里我想创建一个动态表单,我想在其中识别 {field_name} 并将其替换为 EditText。
下面给出的字符串是从 API 响应中收到的字符串,是的,它包含 "{}" 作为字符串的一部分。
所以我在 while 循环 的帮助下寻找它们,并在每次找到 {} 时创建 EditText。
现在我无法解决的问题是如何将这些 EditText 附加到 String/TextView。
例如,
String demo = "{event_name} Event on{event_date} at {event_time} venue {event_venue} All are welcome. -";
Pattern p = Pattern.compile("\{([^}]*)\}");
Matcher m = p.matcher(str);
EditText et;
while (m.find()) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 10, 10, 10);
et = new EditText(this);
Log.e("onCreateInternal: ", "=" + i);
SmsTypeGroup.addView(et, lp)
}
将 {} 替换为字符串中的 EditText 后,所需的输出如下所示。
Required output is as shown in this Image
任何帮助都会很棒。
提前致谢。
注意:唯一的条件是整个过程要从 Java 文件以编程方式完成,不使用 XML.
我知道英语不是你的第一语言,但如果我理解正确的话,你现在得到的只是一个带有 4 个 editText 的视图,你需要一种方法来额外添加带有 {} 之间文本的文本视图字符串中的元素。
一种方法是使用拆分而不是模式匹配:
String demo = "{event_name} Event on{event_date} at {event_time} venue {event_venue} All are welcome. -";
String[] parts = demo.split("}");
EditText et;
for(String part : parts){
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 10, 10, 10);
et = new EditText(this);
SmsTypeGroup.addView(et, lp);
String[] _parts = part.split("{");
if(_parts.length >1){
TextView tv = new TextView(this);
tv.text = _parts.[0];
SmsTypeGroup.addView(tv, lp)
}
}
我正在根据 API 的 JSON 响应接收的字符串制作动态表单。
在这里我想创建一个动态表单,我想在其中识别 {field_name} 并将其替换为 EditText。
下面给出的字符串是从 API 响应中收到的字符串,是的,它包含 "{}" 作为字符串的一部分。
所以我在 while 循环 的帮助下寻找它们,并在每次找到 {} 时创建 EditText。
现在我无法解决的问题是如何将这些 EditText 附加到 String/TextView。
例如,
String demo = "{event_name} Event on{event_date} at {event_time} venue {event_venue} All are welcome. -";
Pattern p = Pattern.compile("\{([^}]*)\}");
Matcher m = p.matcher(str);
EditText et;
while (m.find()) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 10, 10, 10);
et = new EditText(this);
Log.e("onCreateInternal: ", "=" + i);
SmsTypeGroup.addView(et, lp)
}
将 {} 替换为字符串中的 EditText 后,所需的输出如下所示。
Required output is as shown in this Image
任何帮助都会很棒。
提前致谢。
注意:唯一的条件是整个过程要从 Java 文件以编程方式完成,不使用 XML.
我知道英语不是你的第一语言,但如果我理解正确的话,你现在得到的只是一个带有 4 个 editText 的视图,你需要一种方法来额外添加带有 {} 之间文本的文本视图字符串中的元素。
一种方法是使用拆分而不是模式匹配:
String demo = "{event_name} Event on{event_date} at {event_time} venue {event_venue} All are welcome. -";
String[] parts = demo.split("}");
EditText et;
for(String part : parts){
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 10, 10, 10);
et = new EditText(this);
SmsTypeGroup.addView(et, lp);
String[] _parts = part.split("{");
if(_parts.length >1){
TextView tv = new TextView(this);
tv.text = _parts.[0];
SmsTypeGroup.addView(tv, lp)
}
}