忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 11:49 】 |
RelativeLayout
RelativeLayout
自由な配置を指定できるレイアウト。


============================================
RelativeLayout
リファレンス

gravity
いつもと同じ。

ignoreGravity
gravityを無視させるオブジェクトを1つだけ指定できる。(対応するsetIgnoreMethod()の形からして、1つしか指定できないようだ)





<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="right"
android:ignoreGravity="@+id/imageView11"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView11"
android:src="@drawable/ic_launcher" />

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageView11"
android:layout_below="@+id/imageView11"
android:layout_marginTop="41dp"
android:background="#ff0"
android:orientation="vertical" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />

</LinearLayout>
</RelativeLayout>









ひとつだけgravityを無視させる場合。





<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="right"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView11"
android:src="@drawable/ic_launcher" />

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageView11"
android:layout_below="@+id/imageView11"
android:layout_marginTop="41dp"
android:background="#ff0"
android:orientation="vertical" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />
</LinearLayout>
</RelativeLayout>






注意!
match_parentのオブジェクトは、gravityの影響を受けない。
それは分かるが、なぜか巻き添えで全部のオブジェクトがgravityの影響を受けなくなる。

デフォルトで左揃えの設定になっていたりするからだろうか。

RelativeLayoutParams

layout_above
指定したオブジェクトの上に配置する。
android:layout_above="@+id/imageView11"
layout_below
layout_toRightOf
layout_toLeftOf
も同様。



<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="16dp"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/imageView11"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_launcher" />

</RelativeLayout>








また、
android:layout_marginBottom="16dp"
などと組み合わせて、隙間を作ることも可能。
さらに、対象のオブジェクトに
android:layout_marginTop="16dp"
と書いてあれば、両方分のマージンが置かれることになる。


layout_alignTop
指定したオブジェクトと上辺の位置を合わせる。
android:layout_alignTop="@+id/imageView11"
layout_alignBottom
layout_alignLeft
layout_alignRight
も同様。

layout_alignParentTop
layout_alignParentBottom
layout_alignParentLeft
layout_alignParentRight
trueかfalse指定。
親コンテナの上下左右に合わせる。



<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignBottom="@+id/imageView11"
android:src="@drawable/abc_ic_go" />

</RelativeLayout>









layout_centerHorizontal
true,falseで指定。左右の中心
android:layout_centerHorizontal="true"
layout_centerVertical
layout_centerInParent
も同様。


layout_alignWithParentIfMissing
toLeftOf, toRightOf, above, below と一緒に使う。
その対象のオブジェクトが消えたとき、親コンテナを対象にする。
android:layout_alignWithParentIfMissing="true"



<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/imageView11" <!-- ここ!!!!!!! ->
android:layout_alignWithParentIfMissing="true" <!-- ここ!!!!!!! ->
android:src="@drawable/abc_ic_go" />

</RelativeLayout>







ここでもしtoLeftOfがなくなると、以下のようになる。


android:layout_alignWithParentIfMissingの指定が無いと以下のようになる。



layout_alignBaseline
テキストのベースラインを指定のオブジェクトに合わせる。



<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:src="@drawable/ic_launcher" />

<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imageView11"
android:layout_alignBaseline="@+id/imageView11"
android:ems="10" >

</RelativeLayout>






上辺に合わせているが、これでいいのだろうか?


その他、
layout_toStartOf
layout_toEndOf
layout_alignParentStart
layout_alignParentEnd
layout_alignStart
layout_alignEnd
もある。がstart edge, end edgeがどこなのか?だが
RelativeLayoutやImageViewの場合、startはleft, endはrightと同じだった。

PR
【2014/08/29 01:17 】 | Android | 有り難いご意見(0)
<<FrameLayout | ホーム | LinearLayout>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>