Listview With A Mpandroidchart(or Whatever) Below
Edit: I changed the title because isn't about MPAndroidChart, the same issue would happen with another view below the ListView. I am trying to set a layout for an activity in m
Solution 1:
Try this code
Portrait Mode
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#22bbcc"android:orientation="vertical"><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="0dp"android:layout_margin="4dp"android:layout_weight="0.50"android:background="#ccbb22" /><LinearLayoutandroid:id="@+id/LinearLayout_chart"android:layout_width="match_parent"android:layout_height="0dp"android:layout_margin="4dp"android:layout_weight="0.50"android:background="#ddaaaa"android:orientation="horizontal"><!--You can have your chart here --></LinearLayout></LinearLayout>
Landscape Mode
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="4dp"android:background="#22bbcc"android:orientation="horizontal"><ListViewandroid:id="@+id/listView"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="4dp"android:layout_weight="0.50"android:background="#ccbb22" /><LinearLayoutandroid:id="@+id/LinearLayout_chart"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="4dp"android:layout_weight="0.50"android:background="#ddaaaa"android:orientation="horizontal"><!--You can have your chart here --></LinearLayout></LinearLayout>
if possible add the PieChart
dynamically to the LinerLayout
private PieChart mChart;
privatefloat[] yData = {5, 4, 5, 2};
private String[] xData = {"Item_one", "Item_two", "Item_Three","Item_Four"};
linearLayoutTwo = (LinearLayout)findViewById(R.id.LinearLayout_chart);
mChart = new PieChart(this);
// configure pie chart
mChart.setUsePercentValues(true);
mChart.setDescription("");
// enable hole and configure
mChart.setDrawHoleEnabled(false);
mChart.setHoleColorTransparent(true);
mChart.setHoleRadius(0);
mChart.setTransparentCircleRadius(0);
// enable rotation of the chart by touch
mChart.setRotationAngle(0);
mChart.setRotationEnabled(false);
ArrayList<Entry> yVals1 = new ArrayList<Entry>();
for (int i = 0; i < yData.length; i++)
yVals1.add(new Entry(yData[i], i));
ArrayList<String> xVals = new ArrayList<String>();
for (int i = 0; i < xData.length; i++)
xVals.add(xData[i]);
// create pie data set
PieDataSet dataSet = new PieDataSet(yVals1, "");
dataSet.setSliceSpace(0);
dataSet.setSelectionShift(1);
// add many colors
ArrayList<Integer> colors = new ArrayList<Integer>();
for (int c : newint[]{Color.rgb(124, 185, 232), Color.rgb(178, 132, 190), Color.rgb(201, 255, 229),
Color.rgb(100, 148, 143)}) {
colors.add(c);
}
colors.add(ColorTemplate.getHoloBlue());
dataSet.setColors(colors);
// instantiate pie data object now
PieData data = new PieData(xVals, dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(9f);
data.setValueTextColor(Color.BLACK);
mChart.setData(data);
// undo all highlights
mChart.highlightValues(null);
// update pie chart
mChart.invalidate();
linearLayoutTwo.addView(mChart);
// customize legends
Legend l = mChart.getLegend();
l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
l.setXEntrySpace(4);
l.setYEntrySpace(4);
Solution 2:
Finally I found a solutions that make what I wanted.
I post this solution here, maybe helps someone.
What I have done is just insert the chart as a footer of the ListView, so I have just the scroll of the listview and at the end de MPAndroidChart (as I wanted).
To achieve that I have made a new layout file, chartlayout.xml
:
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="match_parent"><com.github.mikephil.charting.charts.LineChartandroid:id="@+id/chart"android:layout_width="match_parent"android:layout_height="200dp"/></RelativeLayout>
And so in my activity java file I take the layout from chartlayout
with the inflater service, then I get the chart view and finally I add it to the list as footer:
//get layout
chartLayout = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.chartlayout, null, false);
//get view
mChart = (LineChart) chartLayout.findViewById(R.id.chart);
/*
* chart stuff
*/
...
mylistView.addFooterView(chartLayout);
Post a Comment for "Listview With A Mpandroidchart(or Whatever) Below"