2011-10-05 59 views
0

我尝试了所有我可能找到的对齐此EditText元素 - 但它不会。右对齐EditText - 无法让它与任何属性对齐

我在这里错过了什么?正如你所看到的,我试过android:layout_alignParentRight = "true"android:layout_gravity="right",但没有任何运气。

ps。 linearLayout只是使用RelativeLayout的父元素中的一个元素,但我想这并不重要。

<LinearLayout android:id="@+id/block1" 
    android:layout_width="fill_parent" 
    android:paddingLeft = "4sp" 
    android:padding = "4sp" 
    android:layout_height="25sp" 
    android:layout_marginTop = "4sp" 
    android:layout_below="@+id/Settings_phoneNumbersLbl" 
    android:orientation="horizontal"> 

    <TextView android:id="@+id/Settings_phoneNumbersT1" 
     android:textColor="#000000" 
     android:textSize="14sp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/Settings_phoneNumbersT1" 
    /> 

    <EditText android:id="@+id/myRightAlignedText" 
     android:layout_width="170sp" 
     android:layout_height="wrap_content" 
     android:background="@android:drawable/editbox_background" 
     android:layout_alignParentRight = "true" 
     android:layout_gravity="right" 
    /> 

</LinearLayout> 
+1

您正在使用水平方向。它将一个接一个地添加子视图。所以我建议你使用RelativeLayout并使用layout_alignParentRight,它会起作用。或者在权重1的中间添加一个空白视图。 –

+0

您想要将edittext对齐或edittext的内容对齐????? – Aju

回答

5

尝试使用RelativeLayout而不是LinearLayout。

<RelativeLayout android:id="@+id/block1" 
    android:layout_width="fill_parent" 
    android:paddingLeft = "4sp" 
    android:padding = "4sp" 
    android:layout_height="25sp" 
    android:layout_marginTop = "4sp" 
    android:layout_below="@+id/Settings_phoneNumbersLbl" 
    android:orientation="horizontal"> 

    <TextView android:id="@+id/Settings_phoneNumbersT1" 
     android:textColor="#000000" 
     android:textSize="14sp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/Settings_phoneNumbersT1" 
    /> 

    <EditText android:id="@+id/myRightAlignedText" 
     android:layout_width="170sp" 
     android:layout_height="wrap_content" 
     android:background="@android:drawable/editbox_background" 
     android:layout_alignParentRight = "true" 
     android:layout_gravity="right" 
    /> 

</RelativeLayout> 
+0

..但是,然后EditText的高度收缩。所以我必须将高度设置为固定大小 - wrap_content会使其非常薄。 – user387184

+0

您将高度设置为RelativeLayout,只需设置wrap_content/fill_parent而不是固定尺寸为高度 – Pratik

+0

好吧,我开始明白了,谢谢! – user387184

2

尝试

android:gravity="right" 

这不同于

android:layout_gravity="right" 

前者影响的视图中的内容定位,即文本。后者影响View在其父代中的位置。有关完整说明,请参阅Gravity and layout_gravity on Android

编辑

要对齐EditText其父权,尝试改变父母是RelativeLayout而非LinearLayout,所以layout_alignParentRight属性才能生效。

+0

我应该提到它...这个权利对齐EditText中的文本,但我需要对齐整个框。 – user387184

+0

感谢您的链接,很好的阅读! – user387184

1

按的LinearLayout载体的子元素始终对准了一个又一个 无论其水平或垂直,

如果你想在这里把孩子元素父的右侧则我认为你应该使用FrameLayout

或只是使用RelativeLayout并把两个孩子按照尊重彼此。

谢谢。

2

您应该使用

android:layout_gravity="right" 

因为

android:gravity ="right" 

意味着你(这里的EditText - 这意味着文本对齐)设置视图的孩子右对齐。要对齐EditText本身,请使用第一个。