contentsTextView: vue de texte pour laquelle vous voulez rendre la zone d'affichage variable readMoreTextView: vue de texte utilisée comme bouton "plus"
S'il y a plus de 8 lignes de texte dans le contenu → Afficher "plus"
Utilisez getEllipsisCount () sur Android 5 et supérieur Ne peut-il pas être utilisé en dessous de cela? Comme cela semble être le cas, il est jugé s'il faut afficher «plus» selon que le nombre de lignes de texte affichées est plus grand ou plus petit que le nombre maximum de lignes dans la vue de texte.
MainActivity.java
public void setView (){
contentsTextView.setMaxLines(8);
contentsTextView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int lineCount = contentsTextView.getLineCount();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//Il semble que cela ne fonctionnera pas correctement à moins qu'il ne s'agisse d'android 5 ou supérieur
int hiddenLineCount = contentsTextView.getLayout().getEllipsisCount(lineCount - 1);
if (hiddenLineCount > 0) {
readMoreTextView.setVisibility(View.VISIBLE);
} else {
readMoreTextView.setVisibility(View.GONE);
}
} else{
//android moins de 5
if(lineCount > 8){
readMoreTextView.setVisibility(View.VISIBLE);
}else{
readMoreTextView.setVisibility(View.GONE);
}
}
return true;
}
});
}
@Override
public void onClick(View v) {
if (v.getId() == readMoreTextView.getId()){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
contentsTextView.setMaxLines(100);
contentsTextView.setEllipsize(null);
} else {
contentsTextView.setMaxLines(1000);
contentsTextView.setEllipsize(null);
}
}
}