2016-10-11 1 views
0

У меня есть однострочный текст. Я устанавливаю в нем строку. Иногда полная строка не может отображаться. Поэтому я просто хочу, чтобы эта строка была отображена.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 Developer сейчас это показывает:

Я И

Так как я могу получить

Я И?

Благодаря

+0

попробовать: 'valueTV.setMaxLines (1);' –

+0

Спасибо за комментарий, но я не хочу этого. Я хочу видеть текст в текстовом виде. Я уже установил Макс. Линию на 1. –

ответ

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); 
      } 
     }); 

это дает вам текст видимый в TextView (без трех точек)

+0

Я попробовал раньше. Я снова попытался. Я получаю эту ошибку. java.lang.NullPointerException: попытка вызвать виртуальный метод 'int android.text.Layout.getEllipsisStart (int)' на ссылке нулевого объекта –

+0

Да, потому что вы назвали его методом onCreate, я думаю. Это даст эту ошибку, если макет не создан. Так назовите его из onResume или после. –

+0

Внутренний адаптер. Фактически его календарь. внутри getView –

2

Я благодаря как @Andriy и Суджит за помощь. Смешение обоих ответов сработало для меня.

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); 
          } 
         }); 

 Смежные вопросы

  • Нет связанных вопросов^_^