В настоящее время я эта структура пользовательского интерфейса:Установка LayoutParams не будет применена достаточно быстро
Activity (ACT)
LinearLayout (LL)
HorizontalScrollView (HSV)
RelativeLayout (RL)
Когда я установил параметры макетов RL, они не получают применяться до тех пор, позже, когда уже слишком поздно.
var TotalWidth = GetNewWidth() // eg returns 1000...
var lp = this.LayoutRoot.LayoutParameters;
lp.Width = TotalWidth;
this.LayoutRoot.LayoutParameters = lp;
// this.LayoutRoot.LayoutParameters.Width == 1000
// this.LayoutRoot.Width == 0
this.LayoutRoot.RequestLayout();
this.LayoutRoot.ForceLayout();
this.RequestLayout();
this.ForceLayout();
// this.LayoutRoot.LayoutParameters.Width == 1000
// this.LayoutRoot.Width == 0
Это не проблема, если я не использовал ширину, но я :) я хочу сделать это:
this.ScrollTo(500, 0);
Это не имеет никакого эффекта, как общая ширина HSV дети в настоящее время 0.
Но, если я это сделать:
this.PostDelayed(() => this.ScrollTo((int) percent, 0), 500);
Он работает, после 500мса дель ау.
HSV - производный класс, который управляет его содержимым - просто пустой RL, который я использую для установки ширины, чтобы у меня была огромная область для рисования изображений. Вид массивного холста прокрутки. Кроме того, я пытаюсь сделать это в переопределенном члене HSV OnSizeChanged. Я хочу сделать так, чтобы, если элемент управления изменен, управление прокручивается до той же позиции. Ширина зависит от высоты (сохраняет пропорции)
Я надеялся, что мое предположение было неправильным. Это не так. Благодарю. – Matthew