2013-06-25 53 views
0

我有一個RelativeLayout的寬度/高度設置爲wrap_content。但是,右下角的按鈕在其下側被截斷。 更改RelativeLayout的paddingBottom並沒有幫助,也沒有向按鈕添加marginBottom。Android的RelativeLayout與wrap_content截斷一些孩子

任何想法?

這裏是我的代碼:

<RelativeLayout 
    android:id="@+id/sign_up_phase_enteraddress" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:paddingTop="10dp" 
    android:paddingRight="10dp" 
    android:paddingBottom="10dp" 
    android:paddingLeft="10dp" 
    android:background="#ff6aa639" 
    > 

    <TextView 
     android:id="@+id/sign_up_signuphere" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="29dp" 
     android:text="@string/sign_up_signuphere" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/sign_up_emaillabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/sign_up_signuphere" 
     android:layout_alignLeft="@id/sign_up_signuphere" 
     android:layout_alignBaseline="@+id/sign_up_email" 
     android:text="@string/sign_up_emailaddress" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/sign_up_email" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="46dp" 
     android:layout_below="@id/sign_up_signuphere" 
     android:layout_toRightOf="@id/sign_up_emaillabel" 
     android:ems="10" 
     android:inputType="textEmailAddress" > 

     <requestFocus /> 

    </EditText> 

    <Button 
     android:id="@+id/sign_up_signup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/sign_up_haveaccount" 
     android:layout_alignRight="@id/sign_up_email" 
     android:layout_below="@id/sign_up_email" 
     android:text="@string/sign_up_signup" /> 

    <TextView 
     android:id="@+id/sign_up_haveaccount" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@id/sign_up_emaillabel" 
     android:layout_marginTop="27dp" 
     android:layout_below="@id/sign_up_email" 
     android:text="@string/sign_up_haveaccount" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 


</RelativeLayout> 

...這就是它看起來像在模擬器: button truncated

我如何能得到我的按鈕的下方,顯示有什麼想法? TIA! TIA!

+1

如果你把你的sign_up_sign_up按鈕和你的sign_up_haveaccount textView放在一個水平方向的LinearLayout裏,並且爲這個線性佈局指定了android:layout_below =「@ id/sign_up_email」,它可能會有所幫助。如果你這樣做,不要忘記爲(button和textView)設置layout_weight =「1」 – Opiatefuchs

+0

謝謝。我同意,這可能會起作用。然而,我沒有看到任何理由爲什麼它不應該沒有這個工作,只使用RelativeLayout?我寧願不必添加額外的佈局(應該是),因爲這會影響性能/內存等。 – HughHughTeotl

回答

3

我快速的想法是通過使用XML代碼

android:layout_alignBottom="@+id/sign_up_haveaccount" 

,因爲你已經設置好的layout_below選項已經到按鈕下邊框設置爲文本的高度左側。然而,你的XML代碼是不正確的:)我會嘗試在這裏寫更好的XML代碼給你,稍後。


嗯,我發現你的問題。我正在尋找解決方案。 我設置爲textview新填充底部,因爲按鈕與此textview basline對齊。我知道這可能是一個很好的黑客,但我coudln't找到andy很好的方式來處理它:)

根據您的佈局,我改變了edittext的行爲,使其可拉伸。我還將所有元素分爲3組。每行每一行使其更具可讀性。

另外不要忘記,關於xmls的前兩行。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/sign_up_phase_enteraddress" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:background="#ff6aa639" 
android:paddingBottom="10dp" 
android:paddingLeft="10dp" 
android:paddingRight="10dp" 
android:paddingTop="10dp" > 

<!-- 1 row --> 

<RelativeLayout 
    android:id="@+id/row1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="29dp" > 

    <TextView 
     android:id="@+id/sign_up_signuphere" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/sign_up_signuphere" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
</RelativeLayout> 

<!-- 2 row --> 

<RelativeLayout 
    android:id="@+id/row2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/row1" > 

    <TextView 
     android:id="@+id/sign_up_emaillabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/sign_up_email" 
     android:text="@string/sign_up_emailaddress" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/sign_up_email" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginLeft="20dp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@+id/sign_up_emaillabel" 
     android:inputType="textEmailAddress" > 

     <requestFocus /> 
    </EditText> 
</RelativeLayout> 

<!-- 3 row --> 

<RelativeLayout 
    android:id="@+id/row3" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/row2" > 

    <TextView 
     android:id="@+id/sign_up_haveaccount" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="27dp" 
     android:paddingBottom="15dp" 
     android:text="@string/sign_up_haveaccount" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <Button 
     android:id="@+id/sign_up_signup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/sign_up_haveaccount" 
     android:layout_alignParentRight="true" 
     android:text="@string/sign_up_signup" /> 
</RelativeLayout> 

</RelativeLayout> 
+0

嗨,非常感謝!這確實會導致按鈕被正確顯示(不被剪切),但我確實希望按鈕和「我已經有一個帳戶」文本被基線對齊 - 它看起來更加整潔。 – HughHughTeotl

+0

真的有興趣聽到如何提高XML的順便說一句。如果你有機會做到這一點,這將是大規模,大量讚賞,因爲我還在學習Android :) – HughHughTeotl

+0

我會嘗試寫一些代碼今天晚上 – deadfish

0

這是因爲你的填充發生的事情,你給在底部10 DP填充和你的按鈕查看沒有足夠space.Remove填充和檢查。

+0

感謝您的回覆。不幸的是,沒有工作... – HughHughTeotl