2013-11-28 6 views
0

Пожалуйста, обратите внимание на следующее:Невозможно центрировать вид в макете

<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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="202dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_centerHorizontal="true" 
     android:text="100 de 554" /> 

    <LinearLayout 
     android:layout_width="300dp" 
     android:layout_height="100dp" 
     android:background="@drawable/round_corners" 
     android:layout_centerVertical="true" 
     android:layout_below="@id/textView1" 
     android:gravity="center" 
     android:layout_centerHorizontal="true"> 

     <TextView 
     android:id="@+id/word" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="Text" 
     android:textSize="50sp" /> 

    </LinearLayout> 


</RelativeLayout> 

Это дает ниже UI

enter image description here

Как вы можете видеть, я использовал методы в сделайте центр макета. Но он не центрирован должным образом, а это значит, что он находится не в середине экрана.

Любая идея сделать это центром?

Примечание. Если я добавлю ручную добавку и поля, чтобы сделать ее центром (по вертикали), она может выглядеть по-разному на разных устройствах. Это будет проблемой.

+0

Я вижу его в центре. Вы имеете в виду центр по вертикали? –

+0

@ Перролоко: Да. Вертикально и горизонтально. В середине экрана –

ответ

2

Попробуйте это:

<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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:orientation="vertical" 
     android:layout_centerInParent="true"> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="202dp" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="100 de 554" /> 

     <LinearLayout 
      android:layout_width="300dp" 
      android:layout_height="100dp" 
      android:background="@drawable/round_corners" 
      android:gravity="center"> 

      <TextView 
       android:id="@+id/word" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:gravity="center" 
       android:text="Text" 
       android:textSize="50sp" /> 

     </LinearLayout> 

    </LinearLayout> 

</RelativeLayout> 

В основном это оборачивает контент в LinearLayout с layout_centerInParent набором для true.

android:layout_centerInParent

+0

Прохладный. Спасибо :) –

2

Вы можете использовать centerVertical свойство RelativeLayout, но я хотел бы сделать это следующим образом:

<LinearLayout 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" 
    android:orientation="vertical" 
    android:gravity="center" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

<TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="202dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="100 de 554" /> 

    <LinearLayout 
     android:layout_width="300dp" 
     android:layout_height="100dp" 
     android:background="@drawable/round_corners" 
     android:gravity="center"> 

     <TextView 
     android:id="@+id/word" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="Text" 
     android:textSize="50sp" /> 

    </LinearLayout> 

</LinearLayout> 

В любом случае, вы должны взглянуть на некоторые учебники андроид макета. Если вы используете «alignParentTop» с RelativeLayout, он, конечно, не будет центрирован по вертикали ¬¬

+0

Спасибо за ответ. +1 от меня! –

Смежные вопросы