LoginSignup
4
3

More than 5 years have passed since last update.

【Android】もっと見るボタンの作成

Last updated at Posted at 2017-11-18

もっと見るボタン

部品

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);
                }
            }
    }


4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3