2017-08-02 154 views
1

我的英文很差。所以我扔掉了视频。我认为任何看这个的程序员都会明白原因。预先感谢您如何将布局添加到另一个布局的顶部?

我想学习如何正确使用ReleaseativeLayout,因为ConstainLayout是非常麻烦的。即使在Android Studio Canary中使用它。

所以我现在使用ReleativeLayout和LineartLayout。这些是最有效的ViewGroup。我想。但事实证明都是错误的

enter image description here


XML代码

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark" 
    android:background="@drawable/login_faggot"> 

    <TextView 
     android:gravity="center_horizontal" 
     android:layout_above="@+id/plsLogin" 
     android:text="Welcome." 
     android:textSize="18sp" 
     android:textColor="@color/white" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
    <TextView 
     android:layout_marginBottom="25dp" 
     android:textSize="16sp" 
     android:textColor="@color/grayBg" 
     android:gravity="center_horizontal" 
     android:id="@+id/plsLogin" 
     android:layout_above="@+id/editLogin" 
     android:text="Please Login." 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:background="@color/white" 
     android:layout_alignLeft="@+id/editLogin" 
     android:layout_alignBaseline="@+id/editLogin" 
     android:layout_marginStart="50dp" 
     android:layout_width="1dp" 
     android:layout_height="wrap_content"/> 
    <TextView 
     android:background="@color/white" 
     android:layout_alignLeft="@+id/editPass" 
     android:layout_alignBaseline="@+id/editPass" 
     android:layout_marginStart="50dp" 
     android:layout_width="1dp" 
     android:layout_height="wrap_content"/> 
    <EditText 
     android:paddingStart="20dp" 
     android:drawableStart="@drawable/ic_mail_white_24dp" 
     android:drawablePadding="15dp" 
     android:hint="@string/user_name" 
     android:layout_alignStart="@+id/buttonLogin" 
     android:layout_alignEnd="@+id/buttonLogin" 
     android:layout_above="@+id/editPass" 
     android:id="@+id/editLogin" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
    <EditText 
     android:drawableStart="@drawable/ic_lock_white_24dp" 
     android:paddingStart="20dp" 
     android:drawablePadding="15dp" 
     android:hint="@string/password" 
     android:layout_alignEnd="@+id/buttonLogin" 
     android:layout_alignStart="@+id/buttonLogin" 
     android:layout_above="@+id/linearLayout" 
     android:id="@+id/editPass" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <LinearLayout 
     android:layout_marginStart="15dp" 
     android:id="@+id/linearLayout" 
     android:layout_above="@+id/buttonLogin" 
     android:layout_alignEnd="@+id/buttonLogin" 
     android:layout_alignStart="@+id/buttonLogin" 
     android:layout_width="match_parent" 
     android:layout_marginBottom="50dp" 
     android:layout_height="wrap_content"> 
     <CheckBox 
      style="@style/Widget.AppCompat.CompoundButton.RadioButton" 
      android:id="@+id/radioButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Remember Me" 
      android:paddingStart="15dp" 
      android:textColor="@color/white"/> 

     <TextView 
      android:visibility="invisible" 
      android:id="@+id/textView" 
      android:textColor="@color/white" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="end" 
      android:text="Forgot Password"/> 
    </LinearLayout> 

    <android.support.v7.widget.AppCompatButton 
     android:id="@+id/buttonLogin" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="30dp" 
     android:layout_marginStart="30dp" 
     android:background="@drawable/button_round_corner" 
     app:backgroundTint="@color/colorOrangeUsSite" 
     android:text="@string/login" 
     android:textColor="@color/white"/> 

    <FrameLayout 
     android:background="@color/black" 
     android:alpha="0.8" 
     android:visibility="gone" 
     android:id="@+id/layoutProgressBar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <ProgressBar 
      android:theme="@style/ProgressBar" 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
    </FrameLayout> 
</RelativeLayout> 
+0

如果更改为ConstraintLayout,那么错误消失,一切都开始正常工作 – Prost

回答

3

只需多加一个相对布局低于你的父母的布局和设置重力

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:theme="@style/ThemeOverlay.AppCompat.Dark" 
android:background="@drawable/login_faggot"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:layout_height="match_parent"> 

<TextView 
    android:gravity="center_horizontal" 
    android:layout_above="@+id/plsLogin" 
    android:text="Welcome." 
    android:textSize="18sp" 
    android:textColor="@color/white" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
<TextView 
    android:layout_marginBottom="25dp" 
    android:textSize="16sp" 
    android:textColor="@color/grayBg" 
    android:gravity="center_horizontal" 
    android:id="@+id/plsLogin" 
    android:layout_above="@+id/editLogin" 
    android:text="Please Login." 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

<TextView 
    android:background="@color/white" 
    android:layout_alignLeft="@+id/editLogin" 
    android:layout_alignBaseline="@+id/editLogin" 
    android:layout_marginStart="50dp" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content"/> 
<TextView 
    android:background="@color/white" 
    android:layout_alignLeft="@+id/editPass" 
    android:layout_alignBaseline="@+id/editPass" 
    android:layout_marginStart="50dp" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content"/> 
<EditText 
    android:paddingStart="20dp" 
    android:drawableStart="@drawable/ic_mail_white_24dp" 
    android:drawablePadding="15dp" 
    android:hint="@string/user_name" 
    android:layout_alignStart="@+id/buttonLogin" 
    android:layout_alignEnd="@+id/buttonLogin" 
    android:layout_above="@+id/editPass" 
    android:id="@+id/editLogin" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
<EditText 
    android:drawableStart="@drawable/ic_lock_white_24dp" 
    android:paddingStart="20dp" 
    android:drawablePadding="15dp" 
    android:hint="@string/password" 
    android:layout_alignEnd="@+id/buttonLogin" 
    android:layout_alignStart="@+id/buttonLogin" 
    android:layout_above="@+id/linearLayout" 
    android:id="@+id/editPass" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

<LinearLayout 
    android:layout_marginStart="15dp" 
    android:id="@+id/linearLayout" 
    android:layout_above="@+id/buttonLogin" 
    android:layout_alignEnd="@+id/buttonLogin" 
    android:layout_alignStart="@+id/buttonLogin" 
    android:layout_width="match_parent" 
    android:layout_marginBottom="50dp" 
    android:layout_height="wrap_content"> 
    <CheckBox 
     style="@style/Widget.AppCompat.CompoundButton.RadioButton" 
     android:id="@+id/radioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Remember Me" 
     android:paddingStart="15dp" 
     android:textColor="@color/white"/> 

    <TextView 
     android:visibility="invisible" 
     android:id="@+id/textView" 
     android:textColor="@color/white" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="end" 
     android:text="Forgot Password"/> 
</LinearLayout> 

<android.support.v7.widget.AppCompatButton 
    android:id="@+id/buttonLogin" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="30dp" 
    android:layout_marginStart="30dp" 
    android:background="@drawable/button_round_corner" 
    app:backgroundTint="@color/colorOrangeUsSite" 
    android:text="@string/login" 
    android:textColor="@color/white"/> 

</RelativeLayout> 

<FrameLayout 
    android:background="@color/black" 
    android:alpha="0.8" 
    android:visibility="gone" 
    android:id="@+id/layoutProgressBar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ProgressBar 
     android:theme="@style/ProgressBar" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</FrameLayout> 

1
  1. 只有父级布局的高度和宽度可以匹配父级而不是子级。
  2. 你已经进入的FrameLayout高度= “match_parent”
  3. 你已经实现这样

    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark" 
    android:background="@drawable/login_faggot"> 
    
    <TextView 
    android:gravity="center_horizontal" 
    android:layout_above="@+id/plsLogin" 
    android:text="Welcome." 
    android:textSize="18sp" 
    android:textColor="@color/white" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
    <TextView 
    android:layout_marginBottom="25dp" 
    android:textSize="16sp" 
    android:textColor="@color/grayBg" 
    android:gravity="center_horizontal" 
    android:id="@+id/plsLogin" 
    android:layout_above="@+id/editLogin" 
    android:text="Please Login." 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
    
    <TextView 
    android:background="@color/white" 
    android:layout_alignLeft="@+id/editLogin" 
    android:layout_alignBaseline="@+id/editLogin" 
    android:layout_marginStart="50dp" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content"/> 
    <TextView 
    android:background="@color/white" 
    android:layout_alignLeft="@+id/editPass" 
    android:layout_alignBaseline="@+id/editPass" 
    android:layout_marginStart="50dp" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content"/> 
    <EditText 
    android:paddingStart="20dp" 
    android:drawableStart="@drawable/ic_mail_white_24dp" 
    android:drawablePadding="15dp" 
    android:hint="@string/user_name" 
    android:layout_alignStart="@+id/buttonLogin" 
    android:layout_alignEnd="@+id/buttonLogin" 
    android:layout_above="@+id/editPass" 
    android:id="@+id/editLogin" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
    <EditText 
    android:drawableStart="@drawable/ic_lock_white_24dp" 
    android:paddingStart="20dp" 
    android:drawablePadding="15dp" 
    android:hint="@string/password" 
    android:layout_alignEnd="@+id/buttonLogin" 
    android:layout_alignStart="@+id/buttonLogin" 
    android:layout_above="@+id/linearLayout" 
    android:id="@+id/editPass" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
    
    <LinearLayout 
    android:layout_marginStart="15dp" 
    android:id="@+id/linearLayout" 
    android:layout_above="@+id/buttonLogin" 
    android:layout_alignEnd="@+id/buttonLogin" 
    android:layout_alignStart="@+id/buttonLogin" 
    android:layout_width="match_parent" 
    android:layout_marginBottom="50dp" 
    android:layout_height="wrap_content"> 
    <CheckBox 
        style="@style/Widget.AppCompat.CompoundButton.RadioButton" 
        android:id="@+id/radioButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Remember Me" 
        android:paddingStart="15dp" 
        android:textColor="@color/white"/> 
    
    <TextView 
        android:visibility="invisible" 
        android:id="@+id/textView" 
        android:textColor="@color/white" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:gravity="end" 
        android:text="Forgot Password"/> 
        </LinearLayout> 
    
    <android.support.v7.widget.AppCompatButton 
    android:id="@+id/buttonLogin" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="30dp" 
    android:layout_marginStart="30dp" 
    android:background="@drawable/button_round_corner" 
    app:backgroundTint="@color/colorOrangeUsSite" 
    android:text="@string/login" 
    android:textColor="@color/white"/> 
    
    <FrameLayout 
    android:background="@color/black" 
    android:alpha="0.8" 
    android:visibility="gone" 
    android:id="@+id/layoutProgressBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <ProgressBar 
        android:theme="@style/ProgressBar" 
        android:layout_gravity="center" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/> 
    </FrameLayout> 
    </RelativeLayout> 
    
相关问题