1. activity的背景透明theme:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
2. pro整体没有toolbar:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
</style>
3. 关于view getheight() =0 的问题解决:
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();//view树绘制完成
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//在此处getheight则会得到正常值
}
});
4.viewpager源码测量宽高有三种模式AT_MOST,EXACTLY,UNSPECIFIED 前两种直接读取父类测量值,如果scrollview中放viewpager的话则会走第三种。
解决方案:自定义scrollview在onmesure中给控件的高度赋值
在 Activity 的 onCreate、onStart、OnResume 生命周期中,无法直接得到 View 的宽高信息。
网上有以下几种常见的解决办法:
- 在 Activity#onWindowFocusChanged 回调中获取宽高。
- view.post(runnable),在 runnable 中获取宽高。
- ViewTreeObserver 添加 OnGlobalLayoutListener,在 onGlobalLayout 回调中获取宽高。
- 调用 view.measure(),再通过 getMeasuredWidth 和 getMeasuredHeight 获取宽高。NSPECIFIED的官方解释:父容器不会对子元素加以任何约束,子元素可以是任何大小。