Я рисую Drawable для пользовательского представления в android.
Когда отображается пользовательское представление, родительский элемент является ScrollView. Когда scrollview перемещает Drawables сжимаются до тех пор, пока они не выйдут из экрана, а затем увеличатся, когда вы прокрутите назад до пользовательского виджета, даже если он явно установлен на квадрат 219dip.
Причина заключается в том, как я получаю оценки в методе onDraw (Canvas canvas)
int mRight;
int mLeft;
int mBottom;
int mTop;
mRight = canvas.getClipBounds().right;
mLeft = canvas.getClipBounds().left;
mBottom = canvas.getClipBounds().bottom;
mTop = canvas.getClipBounds().top;
int availableWidth = mRight - mLeft;
int availableHeight = mBottom - mTop;
Кажется, что ClipBound изменяется, чтобы отобразить, какая часть экрана видна на экране. Поэтому измените размер Drawables до тех пор, пока он не станет очень маленьким и не погаснет экран.
Я попытался заменить код выше этим
int availableWidth = canvas.getWidth();
int availableHeight = canvas.getHeight();
Теперь ничего не отображается на экране? не должно ли это работать?
При рисовании моего пользовательского Drawable я использую:
float w = this.getBounds().width();
float h = this.getBounds().height();
чтобы получить граничную область моего Drawable в методе draw(Canvas canvas)
. Я не пробовал это в ScrollView, но я бы подумал, что границы Drawable должны работать одинаково в любом случае.
Надеюсь, что это поможет.
Это работает для моего пользовательского представления, этот код используется в методе onDraw (Canvas canvas).
mRight = this.getRight();
mLeft = this.getLeft();
mBottom = this.getBottom();
mTop = this.getTop();
int availableWidth = mRight - mLeft;
int availableHeight = mBottom - mTop;
предыдущий ответ был неправильным, у представления нет метода getBounds()
getWidth()
и getHeight()
вместо того, чтобы вычислять их самостоятельно.