2013-12-17 6 views
0

Кто-то знает, почему следующий код не центрировать текст в кнопкецентрирования TextView в RelativeLayout

но второй делает?

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

    <Button 
     android:id="@+id/gotItButton" 
     android:layout_width="250dp" 
     android:layout_height="50dp" 
     android:layout_gravity="center" 
     android:layout_marginTop="5dp" 
     android:background="@drawable/btn_selector" 
     android:padding="0dp" /> 

    <com.m.view.text.MyTextView 
     android:id="@+id/gotItText" 
     style="@style/textOnBg" 
     android:layout_marginTop="25dp" 
     android:text="Got it" 
     android:textColor="#00bcfe" 
     android:textSize="16dp" 
     android:textStyle="italic" /> 
</RelativeLayout> 

не gravity в родительском и layout_gravity каждом ребенке такой же

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

     <Button 
      android:id="@+id/gotItButton" 
      android:layout_width="250dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:layout_marginTop="5dp" 
      android:layout_centerInParent="true" 
      android:background="@drawable/btn_selector" 
      android:padding="0dp" /> 

     <com.m.view.text.MyTextView 
      android:id="@+id/gotItText" 
      style="@style/textOnBg" 
      android:layout_marginTop="25dp" 
      android:layout_centerInParent="true" 
      android:text="Got it" 
      android:textColor="#00bcfe" 
      android:textSize="16dp" 
      android:textStyle="italic" /> 
    </RelativeLayout> 
+0

вы спрашиваете о том, что кнопка не центрирована, или текст не центрирован? – gaurav5430

+0

Ну, для начала первый код не содержит атрибутов тяжести в TextView, а второй -. Поскольку у вас RelativeLayouts width установлено значение match_parent, как мы можем знать, что текст не просто заполняет всю ширину так или иначе? – Snailer

+0

Вы ничего не сделали для центрирования TextView на первом. 'android: gravity =" center "' on RelativeLayout - это не ваши дети. –

ответ

6

gravity находится внутри кнопки. layout_gravity находится вне (центры в исходном состоянии)

Итак, вам не нужна гравитация в RelativeLayout, переместите ее в Button.

И удалите layout_gravity с кнопки, так как вы используете centerInParent.

+0

гравитация внутри - поэтому, когда в RelativeLayout она должна воздействовать на всех ее детей. нет? –

+0

В теории. Но для этого вам лучше использовать centerInParent (если родительский RelativeLayout) или layout_gravity (если родительский LinearLayout) для детей. Обратите внимание, что ребенок также может быть другим контейнером, поэтому ... никаких проблем вообще –

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