2016-04-18 29 views
5

を使用して表示されないが、マーカービューを表示するには、次のコードを追加しているが、それはMarkerViewは私application.Iで折れ線グラフを示すため<a href="https://github.com/PhilJay/MPAndroidChart" rel="nofollow noreferrer">MPandroidchart</a>を使用していますMPAndroidChart

private void initializeChart(LineChart chart, String chartName) { 
    // Chart view 
    chart.setDrawGridBackground(false); 
    chart.setDescription(""); 
    chart.getLegend().setEnabled(true); 
    //chart.setTouchEnabled(false); 
    int color = getResources().getColor(R.color.white); 
    chart.getAxisLeft().setTextColor(color); // left y-axis 
    chart.getXAxis().setTextColor(color); 

    chart.setTouchEnabled(true); 
    CustomMarkerView mv = new CustomMarkerView(this.getActivity(), R.layout.marker_view_tv); 
    chart.setMarkerView(mv); 

    //X axis 
    XAxis xAxis = chart.getXAxis(); 
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
    xAxis.setDrawGridLines(false); 
    xAxis.setDrawLabels(true); 

    //Y axis 
    YAxis leftAxis = chart.getAxisLeft(); 
    YAxis rightAxis = chart.getAxisRight(); 
    rightAxis.setDrawLabels(false); 
    rightAxis.setDrawGridLines(false); 
    leftAxis.setDrawLabels(true); 
    leftAxis.setDrawGridLines(false); 
    leftAxis.setStartAtZero(false); 

    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity()); 


    leftAxis.setLabelCount(Constants.KEY_LINE_YAXIS_SCALECOUNT, true); 
    ChartItem item = CannonJsonParser.parseCanonJson(act, act.res); 
    int maxYVal = pref.getInt(Constants.KEY_YAXIS_VALUE, 0); 
    leftAxis.setAxisMaxValue(maxYVal); 
    leftAxis.setAxisMinValue(0); 
    setLineData(item, chartName); 
    // set data 
    chart.setData(lineData); 

    chart.getLegend().setEnabled(false); 
    //animate 
    //chart.animateX(2000, Easing.EasingOption.EaseInExpo); 
    chart.setDragEnabled(true); 
    chart.setScaleXEnabled(true); 
    chart.setScaleYEnabled(false); 
    chart.setHighlightPerDragEnabled(false); 
    chart.setHighlightPerTapEnabled(false); 


} 

マイCustomMarkerViewクラス

に表示されていません
public class CustomMarkerView extends MarkerView { 
private TextView tvContent; 

public CustomMarkerView(Context context, int layoutResource) { 
    super(context, layoutResource); 

    tvContent = (TextView) findViewById(R.id.tvContent); 
} 

// callbacks everytime the MarkerView is redrawn, can be used to update the 
// content (user-interface) 
@Override 
public void refreshContent(Entry e, Highlight highlight) { 

    if (e instanceof CandleEntry) { 

     CandleEntry ce = (CandleEntry) e; 

     tvContent.setText("" + Utils.formatNumber(ce.getHigh(), 0, true)); 
    } else { 

     tvContent.setText("" + Utils.formatNumber(e.getVal(), 0, true)); 
    } 
} 

@Override 
public int getXOffset(float xpos) { 
    // this will center the marker-view horizontally 
    return -(getWidth()/2); 
} 

@Override 
public int getYOffset(float ypos) { 
    // this will cause the marker-view to be above the selected value 
    return -getHeight(); 
} 

}

注:私はチャートを表示するフラグメントを使用しています。

答えて

4

..あなたに、この便利はあなたのMarkerViewが表示されていない、あなたがハイライトされていない可能性がありので

 MyMarkerView mv = new MyMarkerView(this.getActivity(), R.layout.custom_marker_view); 

     // set the marker to the chart 
     mChart.setMarkerView(mv); 

を追加します。あなたのチャット内の任意のエントリMarkerViewは、強調表示されている項目に対してのみ表示されます。

あなたは(chart.setHighlightPerTapEnabled(false)を呼び出すことによって)、タップごとのエントリを強調表示する機能が無効になっているので、あなただけのように、プログラムで値を強調表示することができます:documentationでその上

chart.highlightValue(...)

より。

1

クラス、

import android.content.Context; 
import android.widget.TextView; 

import com.github.mikephil.charting.components.MarkerView; 
import com.github.mikephil.charting.data.CandleEntry; 
import com.github.mikephil.charting.data.Entry; 
import com.github.mikephil.charting.utils.Utils; 

/** 
* Custom implementation of the MarkerView. 
* 
* @author Philipp Jahoda 
*/ 
public class MyMarkerView extends MarkerView { 

    private TextView tvContent; 

    public MyMarkerView(Context context, int layoutResource) { 
     super(context, layoutResource); 

     tvContent = (TextView) findViewById(R.id.tvContent); 
    } 

    // callbacks everytime the MarkerView is redrawn, can be used to update the 
    // content (user-interface) 
    @Override 
    public void refreshContent(Entry e, int dataSetIndex) { 

     if (e instanceof CandleEntry) { 

      CandleEntry ce = (CandleEntry) e; 

      tvContent.setText("" + Utils.formatNumber(ce.getHigh(), 0, true)); 
     } else { 

      tvContent.setText("" + Utils.formatNumber(e.getVal(), 0, true)); 
     } 
    } 

    @Override 
    public int getXOffset() { 
     // this will center the marker-view horizontally 
     return -(getWidth()/2); 
    } 

    @Override 
    public int getYOffset() { 
     // this will cause the marker-view to be above the selected value 
     return -getHeight(); 
    } 
} 

これを試すとフラグメントクラスで、

関連する問題

 関連する問題