2011-10-06 18 views
6

Esto es lo que tengo:Android centro de diseño de alineación lineal y derecha

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="#FFFFFF"> 
    <LinearLayout android:id="@+id/LinearLayout01" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:background="#E30000" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:gravity="center_horizontal|center_vertical"> 
     <TextView 
      android:id="@+id/TextView00" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="20px" 
      android:textStyle="bold" 
      android:text="Something" 
      android:gravity="right|center_vertical" 
      /> 
     <LinearLayout android:id="@+id/LinearLayout01" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="horizontal" 
      android:gravity="right|center_vertical" 
      android:layout_gravity="center_vertical" 
      android:background="#E30000"> 
      <Button 
       android:id="@+id/btnCalls" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableLeft="@drawable/icon" 
       android:gravity="right|center_vertical" 
      /> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

y quiero que esto:

centro

enter image description here

Así horizontal alinear el texto y vertical centro alinea el botón.

¿Qué me estoy perdiendo? No he probado RelativeLayout y preferiría LinearLayout para resolver esto.

Respuesta

10

tratar este peso se

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="#FFFFFF"> 
    <LinearLayout android:id="@+id/LinearLayout01" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:background="#E30000" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:gravity="center_vertical"> 
     <TextView 
      android:id="@+id/TextView00" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="20px" 
      android:textStyle="bold" 
      android:text="Something" 
      android:layout_weight="1" 
      android:gravity="center"/> 
     <LinearLayout android:id="@+id/LinearLayout01" 
      android:layout_height="wrap_content" 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="horizontal" 
      android:gravity="right|center_vertical" 
      android:layout_gravity="center_vertical" 
      android:background="#E30000"     
      android:layout_width="wrap_content"> 
      <Button 
       android:id="@+id/btnCalls" 
       android:layout_width="wrap_content" 
       android:drawableLeft="@drawable/icon" 
       android:gravity="right|center_vertical" 
       android:layout_height="wrap_content" 
       android:layout_margin="5dip"/> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 
+0

Casi. La vista de texto está en el centro del lugar que queda al botón, pero no en el centro del ancho de la pantalla. – erdomester

+0

Me perdí la parte sobre textView siendo alineado en el centro de la pantalla. ¿Cómo debe alinearse el texto si es más ancho que el ancho de la pantalla menos el ancho de un botón? – Vladimir

+0

Me di cuenta de que si la vista de texto y la distribución lineal están una al lado de la otra eso significa que puedo centrar el texto en la vista de texto pero no en el ancho de la pantalla. Entonces, con el diseño lineal, este problema no se puede resolver. – erdomester

0

Usted ha usado android:gravity="right|center_vertical" en su textview. Use android:gravity="center".

+1

ya lo intenté. nada sucede – erdomester

22
android:gravity="right|center_vertical" 

alinea su Vista de Texto a la derecha. ¿Qué tal center_horizontal?

Y sus LinearLayouts tienen la misma ID, si no hay más código, entonces eliminaría uno de ellos.

+0

ya intentado. no pasa nada – erdomester

+0

intente configurar el ancho de la vista de texto en fill_parent – banzai86

+1

Esto no es una solución. La gravedad funciona solo en los contenidos de texto. No sé cómo se sube la votación. – Harmen

0

creo, la gravedad significa que la posición de las cosas en el interior del componente (por TextView, significa que el texto que ha dado) en el componente donde layout_gravity significa posición del componente en sí mismo en todo el layout.So ...

Trate de usar:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout android:id="@+id/LinearLayout01" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:background="#FFFFFF" 
     > 
     <LinearLayout android:id="@+id/LinearLayout01" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="horizontal" 
      android:background="#E30000" 
      android:layout_gravity="right" 
      android:gravity="center_vertical|right"      
      > 
       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:gravity="center_vertical|center" 
        android:layout_weight="0.9" 
       > 
        <TextView 
         android:id="@+id/TextView00" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#FFFFFF" 
         android:textSize="20px" 
         android:textStyle="bold" 
         android:text="Something" 
         android:gravity="center_horizontal" 
         android:layout_gravity="center_horizontal|center_vertical" 

        /> 
       </LinearLayout> 
       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:gravity="center_vertical|right"      
        android:paddingTop="5dip" 
        android:layout_weight="0.1" 
       > 
        <Button 
         android:id="@+id/btnCalls" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:drawableLeft="@drawable/icon" 
         android:layout_gravity="center_vertical" 
         android:gravity="center"          
        /> 
       </LinearLayout> 
     </LinearLayout> 
    </LinearLayout> 
+0

Nada. El botón se hizo más ancho. – erdomester

+0

por favor revise la respuesta editada. usa algunas correcciones duras como paddingTop = "5dip", pero puede que no sea un problema para ti. Por favor, ajústalo según la imagen que usas en lugar del ícono de Android. – Hiral

+0

El android: layout_marginLeft = "150px" es una solución, sin embargo, esta es una solución difícil que no me gusta. No está claro que el problema solo pueda resolverse con relativelayout. – erdomester

0

definir el diseño de TextView y LinearLayout

conjunto android:layout_weight="1" a TextView

conjunto android:layout_weight="0" a LinearLayout

y también cambiar la layout_width="wrap_content" a LinearLayout y establecer layout_gravity="center" a TextView

+0

Textview desapareció – erdomester

+0

edité mi respuesta está funcionando – Ramakrishna

+0

No, no lo hace. Me di cuenta de que si la vista de texto y la distribución lineal están una al lado de la otra eso significa que puedo centrar el texto en la vista de texto pero no en el ancho de la pantalla. – erdomester

1

intenta agregar Ver vacío por dentro LinearLayout horizontal entre el elemento que desea ver a la izquierda y el elemento que desea ver a la derecha, p. ej .:

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      />     

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 
+0

Por favor, no publique la misma respuesta exacta a varias preguntas. Si las preguntas son duplicadas, por favor deje un comentario sobre la pregunta que indica eso. Si las preguntas no son duplicadas, por favor, adapte su código y su respuesta a la pregunta formulada. –

0

Solo use RelativeLayout, y wallaaa !!!

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:id="@+id/TextView00" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#FFFFFF" 
     android:textSize="20px" 
     android:textStyle="bold" 
     android:text="Something" 
     android:gravity="center" /> 

    <Button 
     android:id="@+id/btnCalls" 
     android:drawableLeft="@drawable/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true"/> 
</RelativeLayout> 
2

me encontré con ninguna de las respuestas funciona exactamente como el PO previsto, pero la solución RelativeLayout era el más cercano. Excepto que el TextView no estaba centrado. Pero, con layout_centerInParent = true, funciona como un encanto:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:id="@+id/TextView00" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#FFFFFF" 
     android:textSize="20px" 
     android:textStyle="bold" 
     android:text="Something" 
     android:layout_centerInParent="true" /> 

    <Button 
     android:id="@+id/btnCalls" 
     android:drawableLeft="@drawable/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true"/> 
</RelativeLayout> 
+0

"layout_centerInParent = true" me ayudó a centrar mi textview! – deimos1988

0

La solución para este es- androide: gravedad = "center_vertical"

Normalmente también tendrá que hacerse cargo de la posición de su matriz también para asegurarse de que funcione

Cuestiones relacionadas