もっと見るボタン
部品
contentsTextView : 表示領域を可変にしたいテキストビュー
readMoreTextView : 「もっと見る」ボタンとして利用するテキストビュー
仕様
コンテンツのテキストが8行より多い場合 → 「もっと見る」を表示
実装内容
Android5以上ではgetEllipsisCount()を使用
それ未満では使えない?ぽいのでテキストビューの最大行数より、表示されているテキスト行数が多いか少ないかで「もっと見る」を表示するかどうかを判断しています。
コード
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) {
//android 5以上じゃないと正常に動作しないぽい
int hiddenLineCount = contentsTextView.getLayout().getEllipsisCount(lineCount - 1);
if (hiddenLineCount > 0) {
readMoreTextView.setVisibility(View.VISIBLE);
} else {
readMoreTextView.setVisibility(View.GONE);
}
} else{
//android 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);
}
}
}