我正在填写空白测验,以将Wikipedia中的一段变为测验。我想用EditText
视图替换该段落中的关键字,但是我认为使用正则表达式是不可能的。我尝试用新的Views替换段落中的链接(例如关键字),但它仅接受字符串作为第二个参数。
String quiz = quiz.replaceAll("<a href=.*?>.*?</a>", new EditText(mContext)); //DOESN'T WORK
是否有其他方法可以用视图替换字符串?我将字符串quiz
放在TextView
内,希望能有一种方法以编程方式将EditTexts
放在正确的位置。
答案 0 :(得分:1)
动态地,我们需要将TextView和EditTexts添加到父布局。 父布局是您希望的,如LinearLayout的Orientation为Horizontal。
当您要用Edittext替换字符串时,首先将文本存储在“替换字符串”之前,然后将该文本设置为TextView并将TextView添加到父项,然后添加EditText。并重置本地存储字符串并通过继续存储字符串直到下一个替换位置来分配下一个字符串。 例如:“世界最佳击球手是X”。我想用EditText替换“ X”。 首先,我将文本存储在字符串“ X”之前,并将其设置为TextView,最后将TextView添加到Parent,然后添加Edittext代替“ X”。在这种情况下,X是定界符。你可以使用任何东西。
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);