安卓果冻豆MeasureSpec错误果冻、错误、MeasureSpec

2023-09-07 12:29:18 作者:红唇印心

我是有这个问题: SlidingMenu在安卓4.3 BUG 但现在我已经固定的,我想分享我的解决方案的原因可能有人会需要它。 我来回答这个问题我吼叫。

I was having this problem: SlidingMenu BUG in android 4.3 But now I've fixed and I want to share my solution 'cause probably someone will need it too. I'll answer this question myself bellow.

推荐答案

所以,我是有上Build.VERSION_ codeS.JELLY_BEAN_MR2有一个问题,当我们想创建一个事实在于该问题的 MeasureSpec

So the problem I was having lies on the fact that Build.VERSION_CODES.JELLY_BEAN_MR2 has a problem when we want to create a MeasureSpec:

MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams..., MeasureSpec.EXACTLY);

使用 MeasureSpec.EXACTLY 时,我如执行 .measure(widthMeasureSpec,heightMeasureSpec); 返回值完全陌生的,所以这个问题就可以,如果我们使用解决了 MeasureSpec.AT_MOST 而不是 MeasureSpec.EXACTLY

With MeasureSpec.EXACTLY when I perform for example a .measure(widthMeasureSpec, heightMeasureSpec); it returns values completely strange, so this problem can be solved if we use MeasureSpec.AT_MOST instead of MeasureSpec.EXACTLY.

希望它可以帮助别人的未来;) PS:我不知道,如果Android的奇巧(4.4,API 19)有这个问题了。 编辑:它

Hope it helps someone in the future ;) ps: I don't know if Android Kitkat (4.4, API 19) has this problem too. it does.

int widthMeasureSpec;
int heightMeasureSpec;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.MATCH_PARENT, View.MeasureSpec.AT_MOST);
    heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.AT_MOST);
} else {
    widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.MATCH_PARENT, View.MeasureSpec.EXACTLY);
    heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY);
}