2016-08-18 10 views
0

は、私は、これらのビュー私はこれに合わせることができますどのように RelativeLayout、他のビューの中央を揃える方法は?

<View 
    android:id="@+id/a" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:background="@color/opaque_red" /> 
<View 
    android:id="@+id/b" 
    android:layout_width="20dp" 
    android:layout_height="20dp" 
    android:layout_alignBottom="@id/a" 
    android:layout_toRightOf="@id/a" 
    android:background="@color/opaque_red" /> 
<View 
    android:id="@+id/c" 
    android:layout_width="20dp" 
    android:layout_height="20dp" 
    android:layout_alignBottom="@id/a" 
    android:layout_toLeftOf="@id/a" 
    android:background="@color/opaque_red" /> 

を作成しましたか?私は位置計算が a上のベースになる、 aビューを移動し OnTouchListenerを使用しますので、私は、これらの3つのビューがラップする別のレイアウトを使用することはできません

enter image description here

。他のレイアウトをラップすると、計算が非常に難しくなります。

答えて

0

aの下端または上端にbとcを揃えてから、それぞれbとcの下端または上端に15dpのマリンを追加します。ビューにはサイズがハードコードされているため、これは機能します。もう一つの方法があったのだろう、基本的

margin = ((a.height - b.height)/2) 

はwrap_contentかの高さ、および垂直方向の中心にbとcを揃えるために設定された相対レイアウトでそれらを含んでいますが、あなたは、あなたがいないと述べましたそれが欲しい。

+0

実はそれは、私に関係なく、サイズの問題 –

+0

のためだけにハードコードされたサイズ、大きさせずに3つのwrap_contentのImageViewのですアルゴリズムは成立する。それにもかかわらず、あなたがレイアウトでそれらをラップすると、それはずっと簡単になります。 – WIllJBD

0

wrap_contentする親のレイアウトの設定高さ、そして中央に子供を置く:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <View 
     android:id="@+id/a" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_centerInParent="true" 
     android:background="@android:color/holo_green_light" /> 
    <View 
     android:id="@+id/b" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@id/a" 
     android:background="@android:color/darker_gray" /> 
    <View 
     android:id="@+id/c" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@id/a" 
     android:background="@android:color/darker_gray" /> 

</RelativeLayout> 

enter image description here

関連する問題