android:gravity="right"で右端によらなかった問題


ぱっとみしょうもないことでつまづいたので、記事にしてみました

androidのUIの実装でTextViewをよしなに配置しようとandroid:gravityを使おうとしたところ、
右によること無く左寄せで配置された("ほげほげ"は左寄せ、"削除"は右寄せにしたい)。

コードはこんな感じです。

       <LinearLayout
            android:orientation="horizontal"
            android:layout_width="320dp"
            android:layout_height="30dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#ffffff"
                android:text="ほげほげ"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="right"
                android:textColor="#ffffff"
                android:text="削除" />

        </LinearLayout>

結論から行ってしまうとandroid:width="wrap_content"で指定していたのが原因。
これを"fill_parent"に直すとうまくいった。

理由としてはwrap_contentだとTextViewは文字の大きさ分の領域しか認識しないため、gravityで文字そのものの位置を決める空間(?)が存在しないので右寄せが適用されなかった。

しかし、fill_contentにすると、TextViewが認識する領域は親コンテンツの横幅すべての範囲を認識するため右寄せが可能になるようだ。