지금은이 아이디어를 시도 할 수 없지만 한번 시도해 보겠습니다. this post에 따르면 다음 방법을 사용하여 문자열이 텍스트보기에 맞는지 확인할 수 있습니다.
private boolean isTooLarge (TextView text, String newText) {
float textWidth = text.getPaint().measureText(newText);
return (textWidth >= text.getMeasuredWidth());
}
그래서 하나 개의 아이디어, 텍스트가 항상 같은 경우, 수동으로 각 텍스트 뷰에 대한 초기 값을 정의하고 증가 또는 글꼴을 줄일 때 다음 제거하거나 단어를 추가, 그것을 다시 계산.
는 초기 값이 수동으로 뭔가를 할 수있는 입력 옵션이 아닌 경우 :
String wordsInTextview = new String();
int lastUsedWord= 0;
int totalNumberOfWords = text.size();
for (int i=lastUsedWord;i<totalNumberOfWords;i++) {
if !(isTooLarge(TextView,wordsInTextview)) {
wordsInTextview = wordsInTextview + text(i); // add the words to be shown
} else {
TextView.setText(wordsInTextView);
lastUsedWord= i;
wordsInTextView = new String(); // no idea if this will erase the textView but shouldn't be hard to fix
}
}
당신은 텍스트 크기를 조정할 때 또한 그래서, 텍스트 뷰의 첫 번째 단어의 위치를 저장해야합니다 당신은 어디서부터 시작 해야할지 압니다!
int firstWordOnTextView = TextView.getText().toString().split(" ")[0]
그리고 크기를 조정할 때 동일한 방법으로 화면의 텍스트를 계산합니다. 당신이 더 빠르게하고 싶다면
lastUsedWord = firstWordOnTextView;
, 당신은, 당신은 각 페이지에 얼마나 많은 단어를 추적 평균을 몇 실행 후 항상 거기에서 루프를에 시작할 수 있습니다. 또는 반복하기 전에 피하기 위해 몇 마디.
한 번에 너무 많은 페이지를 표시 할 필요가없는 경우 합리적인 해결책이라고 생각합니다.
코드에서 실수를해서 죄송합니다. 지금 사용해 보지 않아도됩니다! 이 솔루션에 대한 의견? 매우 흥미로운 질문입니다!
텍스트가 항상 동일하거나 변경 될 수 있습니까? – caiocpricci2
텍스트가 동적으로 변경됩니다. – VSB