#android #java
У меня есть своя вьюшка, в которой переопределяется onDraw и с помощью 2D-графики на canvas рисуется мой "компонент". Я хотел бы добавить возможность её скроллить (горизонтально и вертикально). Я переопределил onMeasure: @Override protected void onMeasure(int width, int height) { width = MeasureSpec.getSize(width); height = MeasureSpec.makeMeasureSpec(300, MeasureSpec.EXACTLY); // в статье вместо этой строки super.onMeasure(width, height); // но так совсем не работает setMeasuredDimension(width, height); } Код использования скроллера такой: ScrollView scroller = new ScrollView(context); scroller.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT)); scroller.setFillViewport(true); CustomView view = new CustomView(context); view.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.MATCH_PARENT)); view.setVerticalScrollBarEnabled(true); scroller.setScrollbarFadingEnabled(false); scroller.addView(view); Параметры LayoutParams меняю по-разному, но всё равно результата нет. Этот пример я взял из статьи. Но не совсем понятно: Как быть, если я не могу использовать константу (в примере - 300), потому что моя компонента будет занимать область, оставшуюся от других компонентов (могут быть абсолютно разных размеров). Т.е. может, можно туда поставить FILL_PARENT? Размеры пользовательской компоненты могут меняться. Что нужно сделать, чтобы сказать скроллеру, что компонента внутри него изменила размеры? Как заставить скроллеры отображаться? Что здесь пропущено?
Ответы
Ответ 1
По поводу константы в 300, Вы можете убрать ее и использовать передаваемый в onMeasure() параметр height. FILL_PARENT и WRAP_CONTENT имеют специальные значения, можно и правда попробовать поставить их. Можно попробовать создавать вашу вьюшку в xml и определить свойство scrollbars(может помочь). А вообще, думаю Вам стоит обратить внимание на данный пример, либо другой из данного репозитория. По крайней мере, в коде по ссылке переопределяются все нужные вам методы + скроллинг. Используйте как пример, либо найдите другой кастомный компонент(благо на Google Code их хватает).
Комментариев нет:
Отправить комментарий