1

Я делаю игру Mad Libs для практики, и поэтому у меня будут такие вещи, как EditTexts, чтобы пользователь мог вводить данные.EditText внутри TextVIEW?

Однако сейчас единственный способ получить эту работу - использовать горизонтальный LinearLayout, а затем сделать что-то вроде TextView, за которым следует EditText, за которым следует другой TextView, но если пользователь введет что-то долгое EditText, текст не «обертывается красиво», а скорее скручивает самый правый TextView. Этого следует ожидать, но это не мое желаемое поведение.

Есть ли лучший способ разместить EditTexts внутри TextViews?

+0

Я считаю, что вы имеете в виду между вместо внутри –

+0

Рода. Я вроде как имею в виду внутри - как будто все это было TextView (поскольку оно автоматически обертывается), но частью этого является EditText. Подобно тому, как вы можете сделать часть текста кликабельным, используя SpannableStrings и т. Д. – user6313011

+0

Добавьте 'android: singleline =" true ", поэтому EditText не расширяется по высоте, а затем добавляет максимальные буквы с' android: ems = "максимальные буквы" 'или задает ширину в dp –

ответ

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()); 
Смежные вопросы