【问题标题】:Create Custom Fields Programmatically combining Textview and EditText以编程方式结合 Textview 和 EditText 创建自定义字段
【发布时间】:2019-04-16 11:01:51
【问题描述】:

我正在根据从 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)
}

{} 替换为 String 中的 EditText 后,所需的输出如下。

Required output is as shown in this Image

任何帮助都会很棒。

提前致谢。

注意:唯一的条件是整个过程是通过Java文件以编程方式完成的,不使用XML。

【问题讨论】:

    标签: android android-edittext textview advanced-custom-fields programmatically-created


    【解决方案1】:

    我认为英语不是您的母语,但如果我理解正确,您现在得到的只是一个带有 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)
       }
    }
    

    【讨论】:

    • 感谢您帮助我。稍作改动,它就可以完美解决我的问题。
    • 乐于助人:)
    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多