2016-08-18 3 views
0

Ich habe diese AnsichtenRelativeLayout, wie wird das Zentrum anderer Ansichten ausgerichtet?

<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" /> 

Wie kann ich auf diese ausrichten?

enter image description here

ich nicht ein anderes Layout verwenden können diese drei Ansichten zu wickeln, weil ich OnTouchListener verwenden a Ansicht zu bewegen, wird die Positionsberechnung a Basis auf. Wenn es in ein anderes Layout eingebunden wird, ist die Berechnung sehr schwierig.

Antwort

0

Richten Sie b und c auf den unteren oder oberen Rand von a aus, und fügen Sie dann entweder 15 dp marin zum unteren oder oberen Rand von b bzw. c hinzu. Da Ihre Ansichten eine fest codierte Größe haben, funktioniert das.

im Grunde

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

Ein andere Möglichkeit gewesen wäre, enthalten sie in einem relativen Layout wrap_content oder die Höhe a, und richten b und c auf die vertikalen Mittel eingestellt, aber Sie sagen, Sie dies nicht tun will das.

+0

Eigentlich nur hartkodierte Größe für die Frage, die drei wrap_content Image ohne Größe, ich –

+0

unabhängig von ihrer Größe, der Algorithmus hält. Auch wenn Sie sie in ein Layout einbinden, wird es viel einfacher. – WIllJBD

0

Set Höhe von Eltern Layout wrap_content, dann Kinder Mittelpunkt stellt:

<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

Verwandte Themen