ベースであるRelativeLayout
のいくつかのビューを水平方向に中央に配置しようとしています。
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="center_horizontal"
Android:background="@Android:color/transparent" >
これは機能していません。ビューの1つに対してcenterInParent
をtrue
に設定しましたが、それは機能しました。ただし、2つのビューを並べて中央に配置する必要があるため、このソリューションを使用できません。これを最適化しようとしているので、レイアウト、特に線形を互いに入れ子にしないようにします。
私が行方不明になっている明らかな何かがありますか?この属性はこの状況のために作られていると思いました。
ネストされたViewGroupを使用せずに、3つのビューに関連する同様の問題に回答しました。
https://stackoverflow.com/a/13279846/1011746
これはAPI11でテストされています。
2ビュー水平ケースの場合:
<RelativeLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="center"
Android:background="@Android:color/black"
>
<Button
Android:id="@+id/apply"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="APPLY"
Android:textSize="20sp"
/>
<Button
Android:id="@+id/undo"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="UNDO"
Android:textSize="20sp"
Android:layout_toRightOf="@id/apply"
/>
</RelativeLayout>
2つのビューの垂直の場合:
<RelativeLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="center"
Android:background="@Android:color/black"
>
<Button
Android:id="@+id/apply"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="APPLY"
Android:textSize="20sp"
/>
<Button
Android:id="@+id/undo"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="UNDO"
Android:textSize="20sp"
Android:layout_below="@id/apply"
/>
</RelativeLayout>
複数のレイアウトを一緒にネストする必要があります。何かをRelativeLayoutの中央に配置するには、子でAndroid:layout_centerInParent="true"
を使用します。複数の子供を中央に配置しようとすると、それらはお互いの下/上になります。
したがって、たとえば、RelativeLayoutの子として2つのビューを持つLinearLayoutを使用でき、LinearLayoutにはAndroid:orientation="horizontal"
とAndroid:layout_centerInParent="true"
があります。これで、LinearLayoutはRelativeLayoutの中央に配置され、2つの子が隣り合っているはずです。
2つのビューをLinearLayoutでラップしてから、単一のTextViewの場合と同様に、LinearLayoutをRelativeLayoutの中央に配置します。
したがって、この問題に対する私の修正は、textviewの複合描画可能機能を活用することだけであることがわかりました。ボタンをゴミ箱に移動し、drawableRightを使用して検索アイコンを表示しました。