2016-10-11 132 views
0

XML LinkAndroid的XML佈局搞砸了嗎?

我正在設計一個帶有多個按鈕的應用程序,但它不能正常工作。

這是怎麼顯示在Android Studio中 How it shows in the Android studio

這是怎麼顯示在模擬器 enter image description here

+1

你隱藏與可視性進度=到哪裏去了?嘗試使用可見性=不可見 –

回答

0

這個原因可能是你有不同的屏幕多個佈局文件密度/屏幕尺寸/ android版本。

檢查您的佈局文件夾,並確保沒有在多個文件夾中的多個lauout文件;)

0

看看你的XML定義:

<Button 
     android:text="Back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/button5" 
     android:layout_toLeftOf="@+id/button2" 
     android:layout_toStartOf="@+id/progressBar2" 
     android:layout_marginRight="11dp" 
     android:layout_marginEnd="11dp" 
     android:layout_alignBottom="@+id/button2" /> 

    <Button 
     android:text="Sign up" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="32dp" 
     android:id="@+id/button2" 
     android:layout_below="@+id/editText2" 
     android:layout_toRightOf="@+id/button5" 
     android:layout_toEndOf="@+id/progressBar2" 
     android:layout_marginLeft="14dp" 
     android:layout_marginStart="14dp" /> 

你立足的「符號的位置UP」按鈕,將‘返回’按鈕,通過此聲明:

android:layout_toRightOf="@+id/button5" 

我將讓你正在使用隱藏button5的假設,這反過來將實際上阻止button5被繪製。

現在從您的佈局中丟失,button2將不再有依靠依據。從而使其一直轉移到左側。

的解決方案是非常簡單的:使用View.INVISIBLE而不是View.GONE隱藏正在依靠另一個觀點:

android:visibility="invisible" 
  • 如果:

    • 如果您是通過XML隱藏它您通過Java以編程方式隱藏它:

      button5.setVisibility(View.INVISIBLE); 
      
  • 0

    您在xml佈局中有circular dependancy

    你不能/不應該做的事:

    <Button 
         android:id="@+id/button5" 
         android:layout_toLeftOf="@+id/button2" /> 
    <Button 
         android:id="@+id/button2" 
         android:layout_toRightOf="@+id/button5" /> 
    

    設置其中之一的位置,並根據家長只(如alignParentLeft="true"),然後就可以設置其它的基礎上的位置第一個按鈕。 Circular dependancies有意想不到的結果,可能會在StudioAndroid中顯示不同的結果,或在Android的不同版本中顯示不同的結果。

    0

    我不確定爲什麼顯示在android studio中是正確的,但快速瀏覽一下你的xml,你可以看到back buttonsign up button的引用被搞砸了。請記住,相對佈局使用具有view A的概念,它可以作爲的view B位置的參考用,在你的XML您有:

    <Button 
        android:text="Back" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/button5" 
        android:layout_toLeftOf="@+id/button2" 
        android:layout_toStartOf="@+id/progressBar2" 
        android:layout_marginRight="11dp" 
        android:layout_marginEnd="11dp" 
        android:layout_alignBottom="@+id/button2" /> 
    
    <Button 
        android:text="Sign up" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="32dp" 
        android:id="@+id/button2" 
        android:layout_below="@+id/editText2" 
        android:layout_toRightOf="@+id/button5" 
        android:layout_toEndOf="@+id/progressBar2" 
        android:layout_marginLeft="14dp" 
        android:layout_marginStart="14dp" /> 
    

    button5引用button2,反之亦然,這裏的一個問題是你甚至不知道button2是哪裏,但你用它作爲參考。另外,button5取決於button2的位置,但您使用button5作爲button2的參考。

    我建議使用editText2作爲您的兩個按鈕的參考,因爲editText2已確立其位置。使用android:layout_below="@+id/editText2",然後根據您的需要添加頂部邊距。在此之後,使用

    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    

    爲返回鍵,使用

    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    

    的註冊按鈕。然後你可以調整兩個按鈕的邊距。

    0

    在xml佈局中有一個循環依賴。

    你可以看到

    嘗試這個

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    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"> 
    
    <EditText 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:inputType="textEmailAddress" 
        android:ems="10" 
        android:layout_marginTop="39dp" 
        android:id="@+id/editText" 
        android:hint="email" 
        android:textAlignment="center" 
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true" /> 
    
    <EditText 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:inputType="textPassword" 
        android:ems="10" 
        android:layout_marginTop="47dp" 
        android:id="@+id/editText2" 
        android:hint="pass" 
        android:textAlignment="center" 
        android:layout_below="@+id/editText" 
        android:layout_alignLeft="@+id/editText" 
        android:layout_alignStart="@+id/editText" /> 
    
    <Button 
        android:text="Back" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/button5" 
        android:layout_toStartOf="@+id/progressBar2" 
        android:layout_marginRight="11dp" 
        android:layout_marginEnd="11dp" 
        android:layout_alignBottom="@+id/button2" 
        android:layout_toLeftOf="@+id/progressBar2" /> 
    
    <Button 
        android:text="Sign up" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="32dp" 
        android:id="@+id/button2" 
        android:layout_below="@+id/editText2" 
        android:layout_toEndOf="@+id/progressBar2" 
        android:layout_marginLeft="14dp" 
        android:layout_marginStart="14dp" 
        android:layout_toRightOf="@+id/progressBar2" /> 
    
    <ProgressBar 
        style="?android:attr/progressBarStyle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="85dp" 
        android:id="@+id/progressBar2" 
        android:layout_below="@+id/button5" 
        android:layout_centerHorizontal="true" /> 
    </RelativeLayout>