我正在为练习制作一个疯狂的Libs游戏,所以我会有类似EditTexts的东西,所以用户可以输入数据。
但是现在我能够做到这一点的唯一方法就是使用水平LinearLayout,然后执行类似TextView的操作,然后执行EditText,然后执行另一个TextView,但是如果用户在EditText,文本没有“很好地包装”,而是它最右边的TextView。这是可以预料的,但这不是我最终想要的行为。
有没有更好的方法将EditTexts放在TextViews中?
答案 0 :(得分:0)
只需拥有一个TextView,然后就可以使用ClickableSpan
,甚至可以将多个ClickableSpan添加到给定的TextView中。这为您提供了多行TextView的效果,其中某些点像EditText一样。
如果此类型的对象附加到带有的TextView文本 LinkMovementMethod的移动方法,受影响的文本范围可以 被选中。如果单击,将调用onClick(View)方法。
SpannableString madLibString = new SpannableString("Our school cafeteria has really adjective food");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Toast.makeText(getApplicationContext(), "The text 'adjective' has been clicked. Do something.",
Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
// NOTE: set styling here to give UI feedback that this is text that can be clicked and edited.
ds.setColor(getResources().getColor(android.R.color.holo_red_dark));
}
};
madLibString.setSpan(clickableSpan, 32, 41, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(madLibString);
textView.setMovementMethod(LinkMovementMethod.getInstance());