텍스트를 변경하고 실행하는 TextView가 있습니다. View.getLineCount() 메서드를 사용하여 TextView가 사용하는 줄 수를 확인하고 그에 따라 다른 기능을 수행하려고합니다. 문제는 TextView가 얼마나 많은 줄을 차지하는지 알아야하는 동일한 방법으로 줄 수를 결정해야한다는 것입니다. 두 호출 사이에 View.invalidate()를 호출 해봤지만 아무것도 수정하지 않은 것 같습니다. 가능하다면 뷰를 렌더링하지 않고 선의 수를 측정하고 싶습니다. 그러나 렌더링을해야한다면 그렇게 할 수 있습니다. 이것이 충분히 구체적이지 않은 경우 나에게 알려 주면 더 구체적으로하려고 노력할 것입니다. 감사!Android : 렌더링 전에보기 크기 측정
5
A
답변
1
이것은 실제로 Android에서 실제로 복잡한 문제 일 수 있습니다. 텍스트를 설정할 때 (즉, 뷰가 렌더링되거나 렌더링되기 전에) 알 필요가 있다면, 실제 옵션은 StaticLayout을 사용하는 것입니다. 그래서,
yourTextView.getViewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout(){
yourTextView.getLineCount();
}
}
onGlobalLayout 여러 번 호출 할 수 있습니다 때로는 (어떤 이유) 내가보기 실제로 아직 배치되지 않은 것으로 나타났습니다 : 당신이 가까운 시간을 렌더링 할 때까지 기다릴 수 있다면, 당신은 viewTreeObserver을 사용할 수 있습니다 당신은 어떤 로깅을해야만하고 결과가 무엇이든간에 실제로 이해할 수있는 방법을 찾을 수 있는지 확인해야합니다 (즉, 라인 수가 0보다 큰 경우).
StaticLayouts는보기 크기와 선 수를 줄 수있는 더 복잡한 대안입니다. 그들은 제대로 작동하도록하기 위해 일부 조정을 요구하고, 당신이 측정하려는 뷰에서 페인트를 사용하여 확인 할 수 있습니다,
yourTextView.setText(newText);
//the last boolean should be true if you're using padding on your view
StaticLayout measure = new StaticLayout(yourTextView.getText(), yourTextView.getPaint(),
maxAvailableWidthForYourTextView, Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false)
int numberOfLines = measure.getLineCount();
당신이 기꺼이 경우
(또는 이미) 텍스트 뷰를 서브 클래 싱을 onSizeChanged 또는 onMeasure를 오버라이드 (override) 해, 거기에 행수를 취득하려고 할 수 있습니다. 뷰 트리 옵저버와 마찬가지로 뷰가 실제로 측정되기 전에 뷰 트리 관찰자가 호출 될 수 있으므로 이러한 메서드에서 얻는 값이 무엇이든간에 의미가 있는지 확인해야 할 수 있습니다.
관련 문제
- 1. 눈동자의 눈동자 크기 측정
- 2. Android 캔버스 비트 맵 크기 및 측정
- 3. 웹 페이지 크기 측정
- 4. HttpSession 객체의 크기 측정
- 5. 레이블 크기 측정
- 6. html 렌더링 시간 측정 도구
- 7. 자바 스크립트에서 텍스트 크기 측정
- 8. RootViewController 전에보기 추가하기
- 9. UITabBar를 표시하기 전에보기 표시
- 10. WPF- 렌더링 컨트롤의 동적 격자 측정
- 11. 웹 요청 및 응답의 크기 측정
- 12. WPF의 측정 크기 제한은 어떻게 작동합니까?
- 13. sIFR : 다른 글꼴 크기 렌더링
- 14. Android : ImageView에서 문자열을 렌더링
- 15. Android PDF 렌더링
- 16. 첫 번째 표시 전에보기 너비/높이 또는 글꼴 너비/높이/다른 크기 가져 오기
- 17. Android AppWidget 크기
- 18. android mapview marker 크기
- 19. Android 화면 크기 조정
- 20. Android 앱 크기 문제
- 21. Android 이미지 크기 조정
- 22. 목록보기 크기 설정 Android
- 23. Android - 이미지 버튼 크기
- 24. 이미지 크기 및 Android
- 25. Android 확장형 텍스트 크기?
- 26. Android 액티비티 크기 조정
- 27. 측정 값에 영향을주지 않고 자바 스크립트에서 렌더링 된 html을
- 28. IE 6 또는 FF 3.x에서 페이지 렌더링 시간 측정
- 29. Android 렌더링 및 로직 스레드
- 30. 주어진 크기의 렌더링 가능한 공간의 크기 조정