2017-12-25 36 views
1

텍스트 뷰의 크기를 한 줄에 맞게 조정하려고합니다.textView.getLineCount()는 setTextSize 메서드 다음에 0을 반환합니다.

while (titleText.getLineCount() > 1) { 
    float scaledDensity = ManagerStorage.mainActivity.getResources().getDisplayMetrics().scaledDensity; 
    titleText.setTextSize(titleText.getTextSize()/scaledDensity - 0.5f); 
    Log.i("lines", "" + titleText.getLineCount()); 
    } 

그러나 while 루프는 한 번만 실행됩니다. setTextSize 메소드 후, getLineCount는 항상 0을 반환합니다. while 루프는 runOnUiThread와 함께 실행되는 runnable에서 onCreateView 메소드에 의해 반환 된 후에 작동합니다.

답변

2

while (titleText.getLineCount() > 1) { 
     float scaledDensity = ManagerStorage.mainActivity.getResources().getDisplayMetrics().scaledDensity; 
     titleText.setTextSize(titleText.getTextSize()/scaledDensity - 0.5f); 

     titleText.post(new Runnable() { 
      @Override 
      public void run() { 
       int lineCount = titleText.getLineCount(); 
       Log.i("lines", "" + titleText.getLineCount()); 
       // Use lineCount here 
      } 
     }); 
    } 
+0

을 시도하지만 한 번 그것을 얻을 필요가 없습니다, 그러나 나는 그때는 항상 현재 0 – Jahusek

+0

검사 답을 반환 시작, 내 while 루프의 모든 setTextSize 후 업데이트하는 데 필요한 –

+0

이제 작동합니다. 감사합니다! – Jahusek