由于学习Android时间不长,无法一步直指问题所在,所以我们就从和Toolbar有关的所有代码里面
一个个找(在myclasses里面)。
首先我们在MyClassActivity中首次调用了BaseActivity中的initBackToolbar(Toolbar
toolbar, @StringRes int title, @DrawableRes int navigationIcon)方法
显然这个方法并没有对距离有任何修改。
那么我们在来看这个BaseActivity中的方法,它给Toolbar设置了title和navigationIcon
但是并不能看到其中有对之间的距离有做相应修改,我们翻看其他myclasses下的类,也并没有发现。
那么,问题看来只能是出现在Toolbar中了,那么来看一下Toolbar代码。
好长!相信没有完整的时间和计划大家是不会想好好看完这段代码的。那么我们直接来看里面
最重要的控制输出的代码onLayout(boolean changed, int l, int r, int b)
final int paddingLeft = getPaddingLeft();
//首先是获取系统的偏移量
int left = paddingLeft;
//这段代码用来计算Navigation的Layout
if (shouldLayout(mNavButtonView)) {
if (isRtl) {
right = layoutChildRight(mNavButtonView, right, collapsingMargins,
alignmentHeight);
} else {
//计算完之后left的距离为paddingLeft+mNavButtonView的宽度+mNavButtonView
自身的偏移量
left = layoutChildLeft(mNavButtonView, left, collapsingMargins,
alignmentHeight);
}
}
//核心的方法,返回就是那个让距离错误的值
final int contentInsetLeft = getCurrentContentInsetLeft();
//left会从之前的left值也就是计算过Navigation的距离之后 和contentInsetLeft比较,取最大值
left = Math.max(left, contentInsetLeft);