Android 在文本视图中编辑文本?

Android 在文本视图中编辑文本?,android,android-layout,android-edittext,textview,Android,Android Layout,Android Edittext,Textview,我正在制作一个Mad Libs游戏,以供练习,因此我将有EditText之类的东西,以便用户可以输入数据 然而,现在我唯一能做到这一点的方法是,如果我使用水平线性布局,然后执行类似于TextView的操作,然后是EditText,然后是另一个TextView,但是如果用户在EditText中输入长文本,则文本不会“很好地包裹”,而是压扁最右边的TextView。这是意料之中的,但这不是我最终想要的行为 是否有更好的方法将编辑文本放入文本视图中?只需一个文本视图,然后您就可以使用可点击span,甚

我正在制作一个Mad Libs游戏,以供练习,因此我将有EditText之类的东西,以便用户可以输入数据

然而,现在我唯一能做到这一点的方法是,如果我使用水平线性布局,然后执行类似于TextView的操作,然后是EditText,然后是另一个TextView,但是如果用户在EditText中输入长文本,则文本不会“很好地包裹”,而是压扁最右边的TextView。这是意料之中的,但这不是我最终想要的行为


是否有更好的方法将编辑文本放入文本视图中?

只需一个文本视图,然后您就可以使用
可点击span
,甚至可以将多个可点击span添加到给定的文本视图中。这提供了多行文本视图的效果,其中某些点的作用类似于EditText

如果此类型的对象附加到具有 LinkMovementMethod的移动方法,受影响的文本跨度可以 被选中。如果单击,将调用onClick(View)方法


只要有一个文本视图,就可以使用
可点击span
,甚至可以在给定的文本视图中添加多个可点击span。这提供了多行文本视图的效果,其中某些点的作用类似于EditText

如果此类型的对象附加到具有 LinkMovementMethod的移动方法,受影响的文本跨度可以 被选中。如果单击,将调用onClick(View)方法


我相信你的意思是介于两者之间,而不是内部或外部。我的意思是在里面——好像整个东西是一个文本视图(因为它自动换行),但它的一部分是一个EditText。类似于使用SpannableStrings等使文本的一部分可单击。添加
android:singleline=“true”
,使编辑文本不会在高度上展开,然后使用
android:ems=“最大字母数”添加最大字母数
或在dp中设置宽度问题是,然后没有任何东西包裹——所有条目都固定在位置上。您想要的行为到底是什么?我相信您的意思是介于之间,而不是内部或内部。我的意思是在里面——好像整个东西是一个文本视图(因为它自动换行),但它的一部分是一个EditText。类似于使用SpannableStrings等使文本的一部分可单击。添加
android:singleline=“true”
,使编辑文本不会在高度上展开,然后使用
android:ems=“最大字母数”添加最大字母数
或在dp中设置宽度问题是,然后没有任何内容包装——所有条目都固定在位置上。您希望的行为是什么?
    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());