2016-10-11 13 views
0

私は1行のテキストビューを持っています。私はそれに文字列を設定しています。時にはフルストリングを表示することができません。だから私はその文字列を表示したいだけです。例Android:サインインラインのテキストビューから表示テキストを取得

完全な文字列の場合

TextView valueTV = new TextView(context); 
//       valueTV.setEllipsize(TextUtils.TruncateAt.MIDDLE); 

         valueTV.setText(list.get(i).getTitle()); 


         valueTV.setTag(i); 
          valueTV.setBackgroundColor(Color.parseColor(clr)); 
          valueTV.setTextColor(Color.parseColor(txtclr)); 
         if(dt1.equals(startdt)) 
         { 
          valueTV.setTextColor(Color.parseColor(txtclr)); 

         }else { 
          valueTV.setTextColor(Color.TRANSPARENT); 
         } 
          valueTV.setTypeface(type_thin); 
          valueTV.setId(list.get(i).getId()); 
          valueTV.setMaxLines(1); 
          LinearLayout.LayoutParams ll=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
          ll.setMargins(0,1,0,0); 
          valueTV.setLayoutParams(ll); 
          valueTV.setOnClickListener(this); 
          lladd.addView(valueTV); 

:私はAndroidデベロッパー が今それが表示しています:

を私は私は午前

だからどうすれば

を得ることができますと?

おかげ

+0

try: 'valueTV.setMaxLines(1);' –

+0

コメントありがとうございましたが、私はそれを望んでいません。私は、textview上に可視のテキストが必要です。私はすでに1にMaxラインを設定しました。 –

答えて

2

getOffsetForPosition()を使用してみてください。そのようなスタートなものから表示されるテキストの場合:

int end = textView.getOffsetForPosition(textView.getWidth(), 0) + 1; 
String displayed = textView.getText().toString().substring(0, end); 
+0

私は最後= 0になっています。 –

1
ViewTreeObserver vto = textView.getViewTreeObserver(); 
     vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       String text = (String) textView.getText().subSequence(0, textView.getLayout().getEllipsisStart(0)); 
       Log.i(TAG, "Txt: " + text); 
      } 
     }); 

これはあなたに(3つのドットなし)のTextViewに表示テキストを与える

+0

私は前にthieを試しました。もう一度試しました。 このエラーが発生します。 java.lang.NullPointerException:ヌルオブジェクト参照で仮想メソッド 'int android.text.Layout.getEllipsisStart(int)'を呼び出そうとしています。 –

+0

はい、あなたはonCreateメソッドで呼び出すためです。レイアウトが作成されていない場合、このエラーが発生します。それで、onResumeから、またはそれ以降に呼び出します。 –

+0

内部アダプタ。実際にそのカレンダー。 inside getView –

2

I助けに感謝@AndriyとSujith両方。両方の答えのミックスが私のために働いた。

ViewTreeObserver vto = valueTV.getViewTreeObserver(); 
         vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
          @Override 
          public void onGlobalLayout() { 


           int end = valueTV.getOffsetForPosition(valueTV.getWidth(), 0) + 1; 
         String displayed = valueTV.getText().toString().substring(0, end); 

           System.out.println("i---displayed--" + displayed); 
          } 
         }); 
関連する問題