У меня была эта проблема: https://stackoverflow.com/questions/20121696/slidingmenu-bug-in-android-4-3
Но теперь я исправил и хочу поделиться своим решением, потому что, возможно, оно тоже кому-то понадобится.
Я сам отвечу на этот вопрос ниже.
Ошибка Android Jelly Bean MeasureSpec
comment
Я тоже столкнулся с этой проблемой возвращает 16777215 на Android 4 2 2 "> stackoverflow.com/questions/28798288/
- person Madhur Ahuja   schedule 02.03.2015
Ответы (1)
Итак, проблема, с которой я столкнулся, заключается в том, что Build.VERSION_CODES.JELLY_BEAN_MR2 имеет проблему, когда мы хотим создать MeasureSpec
:
MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams..., MeasureSpec.EXACTLY);
С MeasureSpec.EXACTLY
, когда я выполняю, например, .measure(widthMeasureSpec, heightMeasureSpec);
, он возвращает совершенно странные значения, поэтому эту проблему можно решить, если мы используем MeasureSpec.AT_MOST
вместо MeasureSpec.EXACTLY
.
Надеюсь, это поможет кому-то в будущем ;)
ps: Я не знаю, есть ли эта проблема в Android Kitkat (4.4, API 19).
EDIT: это так.
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);
}
person
GuilhE
schedule
22.11.2013
какой смысл передавать WRAP_CONTENT в качестве первого параметра для nakeMeasureSpec?
- person pskink; 22.11.2013
@pskink, потому что в моем XML я объявил layout_width=wrap_content и layout_height=match_parent, и я думаю (не уверен в этом на 100%), когда я создаю MeasureSpec, я должен использовать ту же настройку.
- person GuilhE; 23.11.2013
или, если вы не хотите анализировать исходный код, создайте собственное представление, установите layout_width в wrap_content, переопределите onMeasure и зарегистрируйте MeasureSpec.toString(), передав первый параметр onMeasure
- person pskink; 23.11.2013
В Kitkat и Lollipop такой проблемы нет.
- person Madhur Ahuja; 02.03.2015