美文网首页
ConstraintLayout - 2. 设置大小(Adjus

ConstraintLayout - 2. 设置大小(Adjus

作者: VittaWang | 来源:发表于2019-11-14 18:06 被阅读0次
    1. 三种测量方式(不要用match_parent)
    固定宽高Fixed(~dp) 适应内容wrap_content 匹配父布局match_constraint(0dp)
    写死多少dp 适应内容 view会尽力延展以适应每一侧的约束,但可以通过下面的属性修改

    layout_constraintWidth_default
    layout_constraintWidth_min
    layout_constraintWidth_max

    2. 设置宽高比(Set size as a ratio)
    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="200dp"
        android:layout_height="0dp"
        android:layout_marginTop="156dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher_background"
        app:layout_constraintDimensionRatio="h,16:9"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    
    (W200,H0) - (h,16:9) (W200,H0) - (w,16:9) (W0,H200) - (h,16:9) (W0,H200) - (w,16:9)

    ① 宽固定时使用(h,16:9),高固定时使用(w,16:9),代表宽高比
    ② 使用dimensionRatio一个边要设置为match_constraint,一个边是固定大小

    3. margin goneMargin
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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:background="#300000ff"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/banner"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:src="@drawable/ic_launcher_background"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>
    
        <TextView
            android:id="@+id/guide_tv"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:background="#D5FF9D"
            android:gravity="center"
            android:text="一行文案"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/banner"
            app:layout_goneMarginTop="10dp"/>
    
        <ListView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:background="#FFADAD"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/guide_tv"
            app:layout_goneMarginTop="10dp" />
    
    
        <!--
                要求:
                1、有这行文案就没有间距
                2、没有这行文案就要间距占位
    
        -->
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    关注下面的“一行文案”视图

    banner展示时 banner gone掉时

    总结
    ① goneMargin 的含义是,我约束到的view变成gone了,我的margin是多少,所以前提是可以设置margin的才有goneMargin;
    ② 对其他视图有约束才能设置margin!没有约束或者不对位置产生影响的约束无法设置margin;比如banner marginBottom是不生效的。guide_tv marginTop生效,因为是对位置有效的约束。
    ③ goneMargin是给自己设置的,不是给gone掉的视图设。goneMargin理解成和margin一样,区别是goneMargin在约束gone掉才生效;

    相关文章

      网友评论

          本文标题:ConstraintLayout - 2. 设置大小(Adjus

          本文链接:https://www.haomeiwen.com/subject/quxdictx.html