Рисуя график, не вижу полученного изображения - PullRequest
0 голосов
/ 07 февраля 2011

Я пытаюсь нарисовать график в Android.Я хочу, чтобы график масштабировался до текущего размера экрана, поэтому вместо того, чтобы явно задавать их в константах, я получаю размер LinearLayout, который предназначен для содержания графика.Однако есть проблема в том, что невозможно получить размеры в onCreate() действия, поэтому я использую пользовательский LinearLayout с переопределенным значением onSizeChanged().Я включаю его в макет с помощью:

view class="com.nnevod.loggraph.graph$GraphDisplayLayout"
    android:layout_height="fill_parent"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:background="@color/White"

Я опустил угловые скобки.

В переопределенном o nSizeChanged() считываются размеры представления, затем все делается так, как описано во многих графических примерах: создается растровое изображение, передается в класс рисования графика, создается ImageView,устанавливается с помощью растрового изображения, а затем добавляется в пользовательский LinearLayout.

Проблема в том, что изображение графика не отображается.Однако, если я попытаюсь проверить это с помощью HierarchyViewer, изображение станет видимым.Если я скопирую код из onSizeChanged() в onCreate() упражнения, не используя предварительно заданные измерения вместо измеренных, все будет отображаться красиво.

Итак, мой вопрос: что я делаю неправильно?У меня были предположения, что либо я использую неправильный контекст в пользовательском onSizeChanged(), либо невозможно оттуда обновить представление, и я должен каким-то образом передать измеренные измерения в действие и сделать вложение растрового изображенияв некоторых методах деятельности.Хотя в части контекста я пытался использовать все доступные контексты, включая использование контекста действия, но безрезультатно.

При необходимости я предоставлю больше кода.

1 Ответ

1 голос
/ 07 февраля 2011

Однажды у меня была похожая проблема, и мне сказали, что средство просмотра Иерархии - это requestLayout().Итак, мне сказали, что я, вероятно, забыл назвать это где-то, но я не думаю, что сделал.Позже я обнаружил, что похожая ситуация была объявлена ​​ошибкой, поскольку это был обходной путь, когда где-то вызывался метод requestLayout ().

Это было странно, потому что на самом деле при некоторых условиях это работало (добавление некоторого случайного представления)тут и там или обновление чертежа).В любом случае, в конце я предпочел создать пользовательский вид, который просто рисовал бы то, что мне нужно (и поскольку рисование происходит после onMeasure, нет проблем с созданием адаптивного чертежа).

(забавно, что опять-таки о графиках!)

ссылки (1) и (2) .

...