2016-10-11 97 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>