用EditText视图替换字符串以填充空白测验

时间:2018-09-05 06:15:43

标签: android view

我正在填写空白测验,以将Wikipedia中的一段变为测验。我想用EditText视图替换该段落中的关键字,但是我认为使用正则表达式是不可能的。我尝试用新的Views替换段落中的链接(例如关键字),但它仅接受字符串作为第二个参数。

String quiz = quiz.replaceAll("<a href=.*?>.*?</a>", new EditText(mContext)); //DOESN'T WORK

是否有其他方法可以用视图替换字符串?我将字符串quiz放在TextView内,希望能有一种方法以编程方式将EditTexts放在正确的位置。

1 个答案:

答案 0 :(得分:1)

动态地,我们需要将TextView和EditTexts添加到父布局。 父布局是您希望的,如LinearLayout的Orientation为Horizo​​ntal。

当您要用Edittext替换字符串时,首先将文本存储在“替换字符串”之前,然后将该文本设置为TextView并将TextView添加到父项,然后添加EditText。并重置本地存储字符串并通过继续存储字符串直到下一个替换位置来分配下一个字符串。 例如:“世界最佳击球手是X”。我想用EditText替换“ X”。 首先,我将文本存储在字符串“ X”之前,并将其设置为TextView,最后将TextView添加到Parent,然后添加Edittext代替“ X”。在这种情况下,X是定界符。你可以使用任何东西。 enter image description here

    LinearLayout parentLayout = new LinearLayout(this);
    parentLayout.setOrientation(LinearLayout.HORIZONTAL);

    TextView textView = new TextView(this);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));

    EditText editText = new EditText(this);
    editText.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    editText.setMinEms(5);

    parentLayout.addView(textView);
    parentLayout.addView(editText);

    int replacedIndex = inputString.indexOf('X');
    String inputText = inputString.substring(0, replacedIndex);
    textView.setText(inputText);