QA@IT

水平方向にTextViewを2つ並べた時、其々の内容(文字列)が大きくてもはみ出ないようにしたい

1644 PV

いつもお世話になっております。
Androidのレイアウトについて、ご相談をさせてください。

質問

現在、以下の記事の方と同じ悩みを抱えています。
「水平方向にTextViewを2つ並べた時に、左側が長文だと右側が表示されない」
enter link description here

上記の記事では最終的に

  • 右側のTextView(TextViewRight)の横幅を取得
  • 左側のTextViewのmaxWidthを[親View.width-TextViewRight.width]で設定

という手法をとられているようですが、
本当にこれしか方法は無いのでしょうか…
(可能であれば、layoutファイル内で対処したいです…)。

解消方法をご存知の方は、御手数ですが御教授のほどよろしくお願いいたします。

(蛇足)質問した詳細な経緯

上記の手法は

  • TextViewRightに値を設定
  • 画面描写が完了したタイミング(onWindowFocusChanged(true)など?)にTextViewLeftのmaxWidth設定、text値設定をする

という認識でいます。

そこで悩んでいるのが、TextViewLeftにtext値を設定する場面です。
設定する値はDBから取得しているもので
かつ複数個ある為、Activityのフィールド変数などでは極力保持をしたくない値です。
保持をしないとなると値を設定する際にDBを参照することになりますが
DB参照回数をなるべく増やしたくないと考えています…
(仕方なければその方針で…)

  • 現状、記事に書いた方法しかなさそうなので
    以下のような形で実装してみました。

    TextViewLeftのViewTreeObserverを取得、
    addOnGlobalLayoutListener()で画面描写終了のイベントを受けたら
    TextViewRightサイズを取得→TextViewLeftの最大幅を設定
    -
  • 間違えました、「TextViewRightの」ViewTreeObserverでした。
    (変わらないかもですが…)
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。