相对位置:

android:layout_above 将该控件的底部置于给定ID的控件之上;

android:layout_below 将该控件的底部置于给定ID的控件之下;

android:layout_toLeftOf    将该控件的右边缘与给定ID的控件左边缘对齐;

android:layout_toRightOf  将该控件的左边缘与给定ID的控件右边缘对齐;

————————————————————————————————

边缘重合或者平行

android:layout_alignBaseline  将该控件的baseline与给定ID的baseline对齐;

android:layout_alignTop        将该控件的顶部边缘与给定ID的顶部边缘对齐;

android:layout_alignBottom   将该控件的底部边缘与给定ID的底部边缘对齐;

android:layout_alignLeft        将该控件的左边缘与给定ID的左边缘对齐;

android:layout_alignRight      将该控件的右边缘与给定ID的右边缘对齐;

 

 

 

 

 

 

android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;

android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;

android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;

android:layout_alignParentRight    如果为true,将该控件的右部与其父控件的右部对齐;

————————————————————————————————

 居中

android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;

android:layout_centerVertical     如果为true,将该控件的置于垂直居中;

android:layout_centerInParent   如果为true,将该控件的置于父控件的中央;

————————————————————————————————

指定移动像素

android:layout_marginTop      上偏移的值;

android:layout_marginBottom 下偏移的值;

android:layout_marginLeft   左偏移的值;

android:layout_marginRight   右偏移的值;

 

 

只需要设置ListView的transciptMode 属性,有distabled、normal、alwaysScroll三个属性,该属性含义:用于控制listview是否自动滑到最底部,用来显示最新条目。常用于ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。如:android:transcriptMode="alwaysScroll"  或 android:transcriptMode="normal" 

 

 

 

CoordinatorLayout学习:   https://blog.csdn.net/shuijianbaozi/article/details/79655183

  1. CoordinatorLayout的使用核心是behavior.
  2. Child当然是子View了, 就是CoordinatorLayout的子View, 更准确的来说, Child是指CoordinatorLayout父布局下要执行动作的子View. 也被称为观察者. 而Dependency是指Child依赖的View. 也被称为被观察者.简单点说, 就是如果Dependency这个View发生了变化, 那么Child这个View就要发生相应变化. 具体变化就是Behavior引入的.Child发生变化的具体执行代码都是放在Behavior这个类里面.
  3. 实现步奏:首先定义一个类, 继承CoordinatorLayout.Behavior<T>, 其中泛型参数T是我们要执行动作的View类, 也就是Child。

必须重写带双参的构造器, 因为从xml反射需要调用

    public MyBehavior(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

类中实现Behavior的两个方法:

判断child的布局是否依赖dependency:

public boolean layoutDependsOn(CoordinatorLayout parent, T child, View dependency)

当dependency发生改变时(位置、宽高等),执行这个函数,返回true表示child的位置或者是宽高要发生改变,否则就返回false

public boolean onDependentViewChanged(CoordinatorLayout parent, T child, View dependency)

4.在child布局中加app:layout_behavior=".MyBehavior",引入刚才创建的Behavior(然后在主类中操作dependency,child执行相应逻辑)