1

Ich mache ein Mad Libs Spiel für die Praxis, und so werde ich Dinge wie EditTexts haben, damit der Benutzer Daten eingeben kann.EditText in einem TextVIEW?

Allerdings ist die einzige Möglichkeit, dies zu einer Art Arbeit zu bringen, wenn ich ein horizontales LinearLayout verwende und dann etwas wie ein TextView gefolgt von einem EditText gefolgt von einem anderen TextView, aber dann wenn der Benutzer etwas eingibt Der EditText, der Text "wickelt sich nicht gut", sondern er quetscht den TextView ganz rechts. Das ist zu erwarten, aber es ist nicht mein Endsollverhalten.

Gibt es eine bessere Möglichkeit, EditTexts in TextViews zu platzieren?

+0

Ich glaube, du meinst zwischen anstelle von innen –

+0

Sort of. Ich meine das irgendwie innerlich - als ob das Ganze ein TextView wäre (da es automatisch umschließt), aber ein Teil davon ist ein EditText. Ähnlich wie Sie einen Teil eines Textes mit SpannableStrings und dergleichen klickbar machen können. – user6313011

+0

Fügen Sie 'android: singleline =" true "' hinzu, so dass der EditText nicht in der Höhe expandiert und dann max Buchstaben mit 'android: ems =" maximale Buchstaben "' hinzufügt oder die Breite in dp –

Antwort

0

Haben Sie nur eine TextView und dann können Sie eine ClickableSpan verwenden und sogar mehrere ClickableSpan (s) zu einem gegebenen TextView hinzufügen. Dies gibt Ihnen die Wirkung von mehrzeiligen TextView mit bestimmten Spots, die wie ein EditText wirken.

Wenn ein Objekt dieser Art auf den Text eines Textview mit einer Bewegungsmethode LinkMovementMethod befestigt wird, können die betroffenen Spannweiten von Text ausgewählt werden. Wenn Sie darauf klicken, wird die onClick (View) -Methode aufgerufen.

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()); 
Verwandte Themen