enter image description here

在上面的屏幕截图中你可以看到第一个条形图,它的相应值是从左边开始 . 我想从左边放一些边距,这样第一个条形图就会与它的值一起显示在屏幕上 . 我已经尝试了很多但却无法做到这一点 . 如果可以,请有人帮助我 . thnks .

以下是我为实现这一目的而编写的代码集 .

CalorieConsumedTrackerActivity.java

  public class CalorieConsumedTrackerActivity extends Activity {

private GraphicalView mChart;
JSONArray dailydata = null;
private ProgressDialog progressDialog;
private static String url_display_user ;
JSONParser jsonParser = new JSONParser();
private static final String TAG_SUCCESS = "success";
private static final String TAG_RESPONSE = "getdata";
JSONArray graphdatas = null;

ArrayList<HashMap<String, String>> getdata;
private static final String TAG_MESSAGE = "message";
String userid=null;
String[] mMonth = new String[7] ;
String[] datefromdb = new String[7] ;

int[] line = {1,2,3,4,5,6,7};
int[] target = new int[7];
int[] consumed = new int[7];

int[]showtarget=new int[7];
int[]showconsumed=new int[7];



XYSeries incomeSeries = new XYSeries("Target");
// Creating an  XYSeries for Expense
XYSeries expenseSeries = new XYSeries("Consumed");
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calories_consumed ); 

    getdata=new ArrayList<HashMap<String,String>>();

    DatabaseHandler db=new DatabaseHandler(getApplicationContext());
    HashMap<String,String> user = new HashMap<String,String>();
    user=db.getUserDetails();
    userid=user.get("userid");

    TextView lstweek=(TextView) findViewById(R.id.lstweek);
    lstweek.setBackgroundColor(Color.parseColor("#FF8000"));

    Calendar myCalendar = Calendar.getInstance();

    myCalendar.set(myCalendar.getTime().getYear()+1900,myCalendar.getTime().getMonth() , myCalendar.getTime().getDate());
    for (int i = 6; i >=0; i--) {
        myCalendar.add(Calendar.DAY_OF_YEAR, -1);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String date = sdf.format(myCalendar.getTime()); 
        System.out.println(date);
        mMonth[i]=date;


    }


    new GetGraphData().execute();
}

private void openChart(){

}   

class GetGraphData extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        progressDialog = ProgressDialog.show(CalorieConsumedTrackerActivity.this, "wait", "Fetching...");
    }

    @Override
    protected String doInBackground(String... params) {

        url_display_user = "http://www.bharatwellness.com/getGraphData.php";

        // Building Parameters
        List<NameValuePair> parametres = new ArrayList<NameValuePair>();
        parametres.add(new BasicNameValuePair("userid", userid));

        // getting JSON string from URL
        JSONObject json = jsonParser.makeHttpRequest(url_display_user,
                "GET", parametres);

        // Check your log cat for JSON reponse
        Log.d("All data : ", json.toString());

        try {
            // Checking for SUCCESS TAG
            int success = json.getInt(TAG_SUCCESS);
            JSONObject c=null;

            if (success == 1) {
                int i;
                int cal=0;
                // products found
                // Getting Array of Products
                graphdatas = json.getJSONArray(TAG_RESPONSE);

                // looping through All RESPONSE
                for (i = 0; i < graphdatas.length(); i++) {

                    c = graphdatas.getJSONObject(i);

                    // Storing each json item in variable

                    String createddate = c.getString("createddate");
                    datefromdb[i]=createddate;
                    String caloriegoal = c.getString("caloriegoal");
                    String calorieconsumed = c.getString("calorieconsumed");
                    double cgoal=Double.parseDouble(caloriegoal);
                    cal=(int) Math.round(cgoal);
                    target[i]=cal;
                    double csumed=Double.parseDouble(calorieconsumed);
                    int calc=(int) Math.round(csumed);
                    consumed[i]=calc;

                }


                for(int x=0;x<mMonth.length;x++){

                    for(int y=0;y<datefromdb.length;y++){

                        if(mMonth[x].equals(datefromdb[y])){

                            showconsumed[x]=consumed[y];
                            showtarget[x]=target[y];


                        }
                        if(showtarget[x]==0){

                            showtarget[x]=cal;
                        }


                    }

                }
                // Creating an  XYSeries for Income

                // Adding data to Income and Expense Series



                for(int j=0;j<line.length;j++){


                    incomeSeries.add(line[j], showtarget[j]);
                    expenseSeries.add(line[j],showconsumed[j]);


                }

                runOnUiThread(new Runnable() {
                    public void run() {
                        // Creating a dataset to hold each series
                        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
                        // Adding Income Series to the dataset
                        dataset.addSeries(incomeSeries);
                        // Adding Expense Series to dataset
                        dataset.addSeries(expenseSeries);       


                        // Creating XYSeriesRenderer to customize incomeSeries
                        XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
                        incomeRenderer.setColor(Color.parseColor("#04B431"));
                        incomeRenderer.setPointStyle(PointStyle.SQUARE);
                        incomeRenderer.setPointStrokeWidth(20);
                        incomeRenderer.setFillPoints(true);
                        incomeRenderer.setLineWidth(2);
                        incomeRenderer.setChartValuesTextSize(27);
                        incomeRenderer.setDisplayChartValues(true);

                        // Creating XYSeriesRenderer to customize expenseSeries
                        XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();
                        expenseRenderer.setColor(Color.parseColor("#FF8000"));
                        expenseRenderer.setPointStyle(PointStyle.CIRCLE);
                        expenseRenderer.setFillPoints(true);
                        expenseRenderer.setLineWidth(2);
                        expenseRenderer.setChartValuesTextSize(27);
                        expenseRenderer.setDisplayChartValues(true);


                        for(int z=0;z<mMonth.length;z++){
                            String createddate=mMonth[z];
                            String month=createddate.substring(5, 7);
                            System.out.println(month);
                            int m=Integer.parseInt(month);
                            System.out.println(m);
                            switch (m) {
                            case 1:
                                month="Jan";
                                break;
                            case 2:
                                month="Feb";
                                break;
                            case 3:
                                month="Mar";
                                break;
                            case 4:
                                month="Apr";
                                break;
                            case 5:
                                month="May";
                                break;
                            case 6:
                                month="June";
                                break;
                            case 7:
                                month="July";
                                break;
                            case 8:
                                month="Aug";
                                break;
                            case 9:
                                month="Sep";
                                break;
                            case 10:
                                month="Oct";
                                break;
                            case 11:
                                month="Nov";
                                break;

                            case 12:
                                month="Dec";
                                break;
                            }

                            String day=createddate.substring(8, 10);

                            String finaldate= day+" "+month;



                            mMonth[z]=finaldate ;
                        }


                        // Creating a XYMultipleSeriesRenderer to customize the whole chart
                        XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
                        multiRenderer.setAxisTitleTextSize(30);
                        multiRenderer.setBackgroundColor(Color.WHITE);
                        multiRenderer.setAxesColor(Color.WHITE);
                        multiRenderer.setApplyBackgroundColor(true);
                        multiRenderer.setXLabels(0);
                        multiRenderer.setChartTitle("Calories Consumed Progress Chart");
                        multiRenderer.setChartTitleTextSize(25);

                        multiRenderer.setGridColor(Color.LTGRAY);
                        multiRenderer.setXTitle("");
                        multiRenderer.setYTitle("Calories");

                        //  multiRenderer.setZoomButtonsVisible(true);
                        multiRenderer.setBarSpacing(1);
                        multiRenderer.setPanEnabled(false, false);
                        multiRenderer.setLabelsTextSize(24);
                        multiRenderer.setAxesColor(Color.BLACK);

                        multiRenderer.setXRoundedLabels(true);
                        multiRenderer.setXLabelsColor(Color.BLACK);
                        multiRenderer.setYAxisMax(3000);


                        multiRenderer.setYAxisMin(0);
                        multiRenderer.setYLabelsColor(0, Color.BLACK);
                        multiRenderer.setMarginsColor(Color.WHITE);
                        multiRenderer.setMargins(new int[]{ 30, 30,20, 0 });
                        multiRenderer.setAxisTitleTextSize(25);
                        multiRenderer.setGridColor(Color.LTGRAY);

                        for(int i=0;i<mMonth.length;i++){

                            multiRenderer.addXTextLabel(i+1, mMonth[i]);

                        }       

                        // Adding incomeRenderer and expenseRenderer to multipleRenderer
                        // Note: The order of adding dataseries to dataset and renderers to multipleRenderer
                        // should be same
                        multiRenderer.addSeriesRenderer(incomeRenderer);
                        multiRenderer.addSeriesRenderer(expenseRenderer);
                        multiRenderer.setYLabels(6);
                        //multiRenderer.setPanEnabled(false);

                        // Getting a reference to LinearLayout of the MainActivity Layout
                        LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);
                        chartContainer.setBackgroundColor(Color.WHITE);

                        chartContainer.setScrollContainer(true);


                        LinearLayout con = (LinearLayout) findViewById(R.id.linear1);
                        con.setBackgroundColor(Color.WHITE);





                        // Specifying chart types to be drawn in the graph
                        // Number of data series and number of types should be same
                        // Order of data series and chart type will be same
                        String[] types = new String[] { LineChart.TYPE, BarChart.TYPE };

                        // Creating a combined chart with the chart types specified in types array
                        mChart = (GraphicalView) ChartFactory.getCombinedXYChartView(getBaseContext(), dataset, multiRenderer, types);
                        mChart.setBackgroundColor(Color.WHITE);
                        multiRenderer.setClickEnabled(true);
                        multiRenderer.setSelectableBuffer(10);

                        multiRenderer.setXLabelsAngle(30.0f);
                        multiRenderer.setYLabelsAngle(30.0f);
                        multiRenderer.setBarWidth(10);

                        multiRenderer.setXLabelsAlign(Align.CENTER);

                        multiRenderer.setXAxisMax(7.5);
                        multiRenderer.setXLabelsPadding(10);
                        multiRenderer.setFitLegend(false);
                        multiRenderer.setLegendTextSize(19);

                        multiRenderer.setOrientation(Orientation.HORIZONTAL);
                        // Adding the Combined Chart to the LinearLayout
                        chartContainer.addView(mChart);  
                    }});


                return json.getString(TAG_MESSAGE);
            } else {
                return json.getString(TAG_MESSAGE);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String result) {
        // dismiss the dialog after getting all products



        progressDialog.dismiss();
        // updating UI from Background Thread


        //Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();

    }
}

}