2011-10-25 15 views
10

que tiene la siguiente XML:RelativeLayout - CenterInParent y marginTop

<RelativeLayout android:id="@+id/cover_box" 
    android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    <ImageView android:id="@+id/cover" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
    <ImageView android:id="@+id/download" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:src="@drawable/mark_download" 
     android:layout_centerInParent="true" android:layout_marginTop="90px" /> 
</RelativeLayout> 

Pero es mirada como si el marginTop está siendo ignorada.

Respuesta

8

Cuando utiliza center en parent, la vista se coloca directamente en el centro. El margen superior solo entrará en juego si un objeto está dentro de 90px de la parte superior de tu vista. Así empujando la vista centrada hacia abajo para mantener al menos 90px de espacio encima. Por lo tanto, no se ignora, pero no está teniendo el efecto que crees que debería tener.

+0

Si ese fuera el caso, a continuación, cambiar el margen de un valor alto cambiaría la posición de la imagen. Pero estoy probando en Android 4.2 y parece que centerInParent anula por completo cualquier margen en el diseño relativo. – Behnam

24

Si desea que la 2da imagen sea de 90dp debajo del centro de la pantalla, puede reemplazarla por una FrameLayout donde puede controlar el relleno para mover su imagen hacia abajo.

<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:paddingTop="90dp"> 
    <ImageView android:id="@+id/download" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/mark_download"/> 
</FrameLayout> 
+1

Esto fue muy útil. Gracias. Centre el framelayout y agregue relleno/ –

+0

esta debería ser la respuesta aceptada –

3

Quiero ProgressBar en muestra bajo android:layout_centerInParent="true" por lo que he añadido un maniquí TextView y ponerlo a centerInParent .A continuación, puse mi progressbar debajo de ella. Ahora puedes aumentar su distancia desde el centro de dos maneras. En primer lugar, al aumentar el margen superior en TextView y al segundo aumentar la altura de TextView.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/widget" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/splash" > 

    <FrameLayout 
     android:id="@+id/splash_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:id="@+id/txt1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" /> 

    <com.s3.tdd.interfaces.CircularProgressBar 
     android:id="@+id/circularprogressbar2" 
     style="@style/Widget.ProgressBar.Holo.CircularProgressBar" 
     android:layout_width="110dip" 
     android:layout_height="110dip" 
     android:layout_below="@+id/txt1" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 
0

Puede hacer una vista ficticia y centrarla en principal. Ahora alinee su vista relativa a la vista ficticia usando el diseño: alignComponent y proporcione el marginTop. Ahora en el código muévelo de acuerdo con el ancho de su vista para centrarlo.

1

Usted puede poner su imageview interior de otra ViewGroup (LinearLayout de diseño RelativeLayout), dejando el margen de imageview, y haciendo android:centerInParent="true" para la ViewGroup:

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

    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:centerInParent="true"> 
      <ImageView android:id="@+id/download" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/mark_download" android:layout_marginTop="90px" />  
    </LinearLayout>  
</RelativeLayout> 
Cuestiones relacionadas