Как заполнить родительский при рисовании на холсте - PullRequest
3 голосов
/ 23 сентября 2011

У меня есть пользовательский вид (Android), который рисует пользовательский индикатор выполнения.Я хочу, чтобы индикатор выполнения заполнил свое родительское представление (ширина).Проблема, с которой я столкнулся, заключается в том, что я не знаю, как собственное представление может получить свои реальные ограничения.он должен знать пределы ширины, чтобы отображать разные цвета в правильном соотношении.Я реализовал onMeasure () следующим образом:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    setMeasuredDimension(widthMeasureSpec, 15);
}

Затем в моем onDraw (), когда я вызываю getWidth(), я получаю: 1073742246. Как я могу узнать реальные родительские границы?очевидно, я сделал что-то не так ... параметры макета вида установлены на MATCH_PARENT / FILL_PARENT, и я могу рисовать всю область, но я не знаю реальной ширины, чтобы нарисовать столбцы в правильной пропорции.

Спасибо,

Ноам

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Это значение содержит необходимую ширину, но также содержит MeasureSpec flags.

Используйте MeasureSpec. getSize () для удаления флагов.

2 голосов
/ 23 сентября 2011

widthMeasureSpec включает в себя другую информацию, кроме ширины в пикселях. Похоже, что onMeasure пытается передать вам 422px как ширину в режиме MeasureSpec.EXACTLY.

Использовать MeasureSpec.getSize(widthMeasureSpec); чтобы получить фактическую ширину в пикселях. Для получения более подробной информации, пожалуйста, смотрите http://developer.android.com/reference/android/view/View.MeasureSpec.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...