2011-10-25 26 views
25

Android - ビューの位置を、親の中心/上端/下端などに相対的な位置に配置するにはどうすればよいですか?

RelativeLayoutRelativeLayoutRelativeLayout

を使用して、オフセット(例えば、下から100ピクセル、左から20ピクセルなど)、または同様に中心(中央の下に30ピクセル)で表示されますか?

schematic image of the necessary layout

textViewに適用する前に、

layoutParams.setMargins(140, 0, 0, 0); 

というビューの余白を設定しようとしましたが、うまくいかなかった。

これは、様々な画面サイズのビューを整列させる非常に便利な方法のようです。

xmlを使わずにコードでこれを達成することが重要です。

ありがとう!

+0

xmlからレイアウトを作成すると、これが作成されます.. –

+0

@PolamReddyごめんなさい、分かりません。言い換えてください。 – DannyA

+0

動的に作成することは難しいですが、作成しやすいxmlファイルからレイアウトを作成してください。 –

答えて

53

あなたはeasiesの中心に位置するアンカー空のビューを使用している、2つの方法があります

<View 
     android:id="@+id/anchor" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_centerInParent="true" /> 


<TextView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/anchor" 
    android:layout_marginBottom="20dp" 
    android:text="hello world!"/> 

それとも、あなたのビューを中心と(それが下のオーバーフローするために使用したパディングを二重にする必要がありpading・ポル・ポジショニングを使用することができます画面中央)

<TextView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:paddingBottom="40dp" 
     android:text="hello world!"/> 
+0

どのような復活:)。賛否両論は、アンカー手法は少し使いやすく、CPU /メモリリソースをもう少し無駄にするかもしれない(相対レイアウトツリーを大きくする)のだろうか?また、私の元の質問はこれをコードで行う必要がありました。 layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT、0)のようなものを使用するよりも、これ以上のことはありませんか?ありがとう! – DannyA

+0

いくつかの要素がある単純なビューの場合、これは完全に機能します! – Vladimir

0

は私だけのAndroidプログラミング今夜を開始し、これは古いか悪いアイデアかもしれ...しかし、私は上記の答えをいじって、私の他の要素以下の要素をされた位置決め発見されました問題を引き起こしている - パッディングワウ私は途中で何かをしています。ここで私は何をやったのですか。

アンカーテクニックを使用して、アンカーに高さ(必要な倍精度)を与え、次に要素を上に揃えました。そうすれば、アンカーの高さの半分を引くことができます。

<View 
    android:id="@+id/anchor" 
    android:layout_width="0dp" 
    android:layout_height="200dp" 
    android:layout_centerInParent="true" /> 

<TextView 
    android:id="@+id/heading" 
    android:text="@string/heading" 
    android:textColor="@android:color/white" 
    android:textSize="24sp" 
    android:layout_alignTop="@id/anchor" 
    android:layout_centerHorizontal="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/subheading" 
    android:text="@string/subheading" 
    android:textColor="@android:color/white" 
    android:textSize="12sp" 
    android:layout_below="@+id/heading" 
    android:layout_centerHorizontal="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

他の回答は多大な助けになりましたが、私は2セントを与えたいと思っていました!

関連する問題