1. ホーム
  2. android

[解決済み] テキストビューが楕円になったかどうかを判断するにはどうすればよいですか?

2023-06-22 20:21:32

質問

私は、複数行の TextView があり android:ellipsize="end" が設定されています。しかし、私はそこに配置した文字列が実際に長すぎるかどうかを知りたいのです (そうすれば、ページ上の別の場所に完全な文字列が表示されることを確認できます)。

私は TextView.length() を使って、おおよその文字列の長さが収まるかどうかを調べますが、複数行になるため TextView は折り返しのタイミングを処理するため、必ずしもうまくいくとは限りません。

何かアイデアはありますか?

どのように解決するのですか?

のレイアウトを取得することができます。 TextView を取得し、行ごとの省略回数を確認します。末尾省略の場合は、このように最終行を確認すれば十分です。

Layout l = textview.getLayout();
if (l != null) {
    int lines = l.getLineCount();
    if (lines > 0)
        if (l.getEllipsisCount(lines-1) > 0)
            Log.d(TAG, "Text is ellipsized");
}

これはレイアウトフェーズの後にのみ動作し、そうでなければ返されたレイアウトはnullとなります。したがって、コードの適切な場所でこれを呼び出します。