2014-07-13 65 views
0

當我運行應用程序和三個文本視圖得到充滿文本,textviews得到重新排列,整個佈局搞砸了。在sdk中,佈局是應該如何佈局的,但是一旦應用程序運行並且文本視圖被文本填充,佈局就會變得混亂。我認爲這與它是一個相對佈局有關,但不確定。有人可以幫我解決這個問題嗎?由於 這是我的XML代碼:菜單屏幕的佈局得到重新安排和搞砸

<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:background="@drawable/background" > 
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="com.example.firstapp.Menu$PlaceholderFragment" > 


<TextView 
    android:id="@+id/txtView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:text="Main Menu" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
    android:id="@+id/button1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/textView7" 
    android:layout_alignBottom="@+id/textView7" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="23dp" 
    android:text="Logout" /> 


<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="200dip" 
    android:layout_below="@+id/textView5" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="14dp" 
    android:text="Courses" /> 

<TextView 
    android:id="@+id/textView5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_toLeftOf="@+id/button2" 
    android:text="User Type:" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/name" 
    android:layout_alignLeft="@+id/textView4" 
    android:text="Name:" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/organization" 
    android:layout_alignBottom="@+id/organization" 
    android:layout_alignLeft="@+id/textView5" 
    android:text="Organization:" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/usertype" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/button2" 
    android:layout_alignRight="@+id/button2" 
    android:text="Medium Text" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/organization" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/usertype" 
    android:layout_alignLeft="@+id/usertype" 
    android:layout_marginBottom="18dp" 
    android:text="Medium Text" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/organization" 
    android:layout_below="@+id/txtView" 
    android:layout_marginTop="15dp" 
    android:text="Medium Text" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<Button 
    android:id="@+id/button1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@+id/button2" 
    android:text="LogOut" /> 

+0

首先,button1在聲明開始時缺少

+0

哪裏?我在開始時看到 Thunderclap

+0

看看你的帖子中的代碼。在你結束TextAppearance =「?android:attr/textAppearanceLarge」/>的第一個TextView代碼塊後,你的下一行是'android:id =「@ + id/button1」' –

回答

0

你不應該嘗試使用一個視圖中的相對關係你定義它。
例如,您在textView2中定義了layout_alignLeft="@+id/textView4",然後再定義textView4。
相對佈局適合構建靈活的佈局,但您仍然需要以合理的方式構建它,方法是僅定義與現有視圖相關的新視圖。

定義相對於根佈局的視圖1。
定義相對於視圖1或根佈局的視圖2。
定義相對於視圖1,視圖2或根佈局的視圖3。


附加:
認爲它這樣。想象一下一張空桌子。

..我給你一個紅色的塊,並告訴你把它放在桌子的中間。
..你這樣做。

..我給你一個白色的塊,並告訴你把它放在紅色塊的右邊。
..再說,你這樣做。

..我給你一個綠色的塊,並告訴你把它放在白色塊的頂部。
..再次,沒有問題。你這樣做。

..我給你一個藍色塊,並告訴你把它放在紫色塊的左邊。
..你說「我不能!!這裏沒有紫色塊!」

+0

你能幫我把這個改成合乎邏輯的方式嗎? – Thunderclap

+0

正如我在回答中所說的,只要確保在向下滾動XML時,添加的每個視圖僅取決於先前在XML佈局中定義的視圖。 –