В настоящее время я пытаюсь нарисовать график в приложении для Android. Библиотека, которую я нашел, называется GraphView (http://www.jjoe64.com/p/graphview-library.html). В настоящее время я использую версию 2, которая доступна на GitHub.
Графики графиков работают очень хорошо. Код, необходимый для получения графика, следующий:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Map<String,List<GraphEntry>> graphData = (...)
if (graphData != null) {
List<GraphEntry> entries = graphData.get("temperature");
GraphView.GraphViewData[] data = new GraphView.GraphViewData[entries.size()];
int i = 0;
for (GraphEntry entry : entries) {
data[i++] = new GraphView.GraphViewData(entry.getDate().getTime(), entry.getValue());
}
GraphView.GraphViewSeries graphViewSeries = new GraphView.GraphViewSeries("temperature", 0xffff0000, data);
LineGraphView graphView = new LineGraphView(this, "temperature");
graphView.addSeries(graphViewSeries);
graphView.setShowLegend(true);
LinearLayout graphLayout = (LinearLayout) findViewById(R.id.layout);
graphLayout.addView(graphView);
}
}
Это создаст нормальный граф. К сожалению, все виды ярлыков отсутствуют. Документация говорит, что для обычного варианта использования не нужно заботиться о ярлыках, поскольку библиотека делает это автоматически. Что я делаю не так? Я получаю простой граф без каких-либо меток.
Для полноты я добавляю график к линейной компоновке. Соответствующий файл макета имеет следующее содержимое:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:padding="5dp"
android:id="@+id/layout"
android:orientation="vertical"
></LinearLayout>
Класс GraphEntry - это только контейнер с атрибутом java.util.Date и атрибутом двойного значения.
Большое спасибо за любую помощь,
Матиас
Я переключился на другой графический движок: AChartEngine. Это работает из коробки.
Вы должны использовать последнюю версию github и включить ее в свой проект. Это позволит вам установить различные цвета, используя
graphView.getGraphViewStyle().setGridColor(Color.GREEN);
graphView.getGraphViewStyle().setHorizontalLabelsColor(Color.YELLOW);
graphView.getGraphViewStyle().setVerticalLabelsColor(Color.RED);
У меня такая же проблема. Это можно решить, удалив следующую строку из файла манифеста.
android:theme="@style/AppTheme"
Я знаю, что это довольно расплывчато, но работал на меня. Я не знаю, почему это происходит. Если вы, ребята, встретите лучшее решение, пожалуйста, поделитесь им.