1

私は練習のためにMad Libsゲームを作っているので、ユーザーがデータを入力できるようにEditTextsのようなものを用意します。TextVIew内のテキストを編集しますか?

しかし、今私がこのような作業をするための唯一の方法は、水平のLinearLayoutを使用し、TextViewの後にEditTextとそれに続く別のTextViewを実行する場合ですが、 EditTextでは、テキストは「きれいにラップする」のではなく、右端のTextViewをスキップします。これは予期されることですが、それは私の最終的に望ましい行動ではありません。

TextViewsの中にEditTextを挿入する方がいいですか?

+0

私はあなたの代わりに、内部 –

+0

ソートの間の平均と考えています。私は一種の内部を意味する - 全体がTextView(自動ラップされているので)のように、その一部はEditTextです。 SpannableStringsなどを使用してテキストの一部をクリック可能にする方法と似ています。 – user6313011

+0

'android:singleline =" true "'を追加して、EditTextが高さを伸ばさないようにし、 'android:ems ="最大文字 "で最大文字を追加するか、またはdpで幅を設定します –

答えて

0

TextViewを1つだけ使用すれば、ClickableSpanを使用して、指定したTextViewに複数のClickableSpanを追加することもできます。これは、EditTextのように動作する特定のスポットで、複数行TextViewの効果をもたらします。

このタイプのオブジェクトがLinkMovementMethodの 移動方法とのTextViewのテキストに接続されている場合、テキストの影響を受けるスパンが 選択することができます。クリックされると、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()); 
関連する問題