ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

TextViewで縦にはみ出してるかどうかを検知したい

どうもわたくしです。

TextViewの高さを超えてテキストがセットされていたら、ボタンを出したい。 ボタンを出したいんです。

f:id:shin_bashi:20150326011934p:plain

こんなかんじにTextViewを超えて長文が入力されていたら

f:id:shin_bashi:20150326011956p:plain

ボタンを出したい。

解決編

行数 > 最大行数(TextViewの高さ / 1行あたりの高さ)でよさそう

final TextView textview = findViewById(R.id.textview);
textView.post(new Runnable() {
            @Override
            public void run() {
                Layout layout = textView.getLayout();
                if (layout != null) {
                    int lines = layout.getLineCount();
                    int max = (int)(textView.getHeight() / textView.getLineHeight());
                    if (lines > max) {
                        findViewById(R.id.button).setVisivility(View.VISIBLE);
                    }
                }
            }
        });

こんな感じ。 行の高さとかViewの高さはレイアウトされてからじゃないと取得できないので、post()を使ってレイアウト後に処理を行えばおk

別にルイズコピペを使いたくてこの記事を書いたわけじゃないよ、ほんとだよ。