процесс 1.Layout
- Просмотр макета
макет метода для определения положения самого представления
public void layout(int l, int t, int r, int b) {
...
}
- Первое положение установки на четыре точки setFrame, вид в родительских судах, чтобы определить
- Внутренние вызовы макета OnLayout, суб-элементов для определения положения родительского контейнера (View нереализованный OnLayout, нуждается в своей собственной реализации)
/**
* Called from layout when this view should
* assign a size and position to each of its children.
*
* Derived classes with children should override
* this method and call layout on each of
* their children.
* @param changed This is a new size or position for this view
* @param left Left position, relative to parent
* @param top Top position, relative to parent
* @param right Right position, relative to parent
* @param bottom Bottom position, relative to parent
*/
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
}
- ViewGroup расположения ,
чтобы определить расположение всех дочерних элементов
- Окончательный макет метод ViewGroup, не могут перезаписать, реализованы как View.layout
@Override
public final void layout(int l, int t, int r, int b) {
if (!mSuppressLayout && (mTransition == null || !mTransition.isChangingLayout())) {
if (mTransition != null) {
mTransition.layoutChange(this);
}
super.layout(l, t, r, b);
} else {
// record the fact that we noop'd it; request layout when transition finishes
mLayoutCalledWhileSuppressed = true;
}
}
- ViewGroup.onLayout абстрактного метода, мы должны переопределить
@Override
protected abstract void onLayout(boolean changed,
int l, int t, int r, int b);
3. Резюме
- Просмотр ViewGroup с макетом реального процесса, OnLayout достигаются, в соответствии с необходимостью достижения макета конкретного, обратитесь к TextView, для достижения LinearLayout.
- процесс измерения ширины и измерения высоты определяет, 4 процесс компоновки определяет конечное положение, то есть ширина и высота точки, разные?
его мера, getMeasureWidth
MLEFT - схема, GetWidth = mRight
два разных значения синхронизации равны, измеряют первым, после компоновки,
если перезапись View.layout, изменить параметры 4:00, приведет к двум различным