2016-08-10 22 views
0

私は、AndroidアプリのBarChart用のウィリアムチャットライブラリを使用しています。クリックしたときにハイライト機能をバーに実装したい。私はドキュメンテーションとサンプルコードを調べましたが、サンプルアプリケーションがこの機能をどのように使用していたかはわかりませんでした。

barSet.getEntry()を使用しようとしましたが、onClickの外側でバーの色を変更しましたが、onClickイベントでは機能しません。私が紛失しているものがなければならない。 BarChartを描画するためのコードです。ウィリアムチャットハイライトバーのクリック&Y軸ラベルの変更

mChart.setAxisBorderValues(0, 0, 50); 

    final BarSet barSet = new BarSet(); 
    Bar bar; 
    for (int i = 0; i < Xlabels.length; i++) 
     barSet.addBar(new Bar(Xlabels[i], (float) earned[i])); 
    barSet.setColor(ContextCompat.getColor(this, R.color.colorAccent)); 

    mChart.setOnEntryClickListener(new OnEntryClickListener() { 
     @Override 
     public void onClick(int setIndex, int entryIndex, Rect rect) { 

      // Change Bar Color Here 

      barSet.getEntry(entryIndex).setColor(ContextCompat.getColor(Earnings.this, R.color.white)); 
     } 
    }); 

    mChart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) {     
     } 
    }); 

    mChart.addData(barSet); 
    mChart.setBarSpacing(Tools.fromDpToPx(8)); 
    mChart.setBorderSpacing(0) 
      .setXLabels(AxisController.LabelPosition.OUTSIDE) 
      .setLabelsColor(Color.parseColor("#FF8E8A84")) 
      .setXAxis(false) 
      .setYAxis(false) 
      .setLabelsFormat(new DecimalFormat("##'M'")); 

    mChart.show(new Animation(1000).setEasing(new LinearEase())); 

そして、私の2番目の問題は、y軸のラベルに最後に自動的に 'M'が付加されてしまうことです。動的Y軸値でそれを削除するか、別の文字を追加するにはどうすればよいですか?

ありがとうございます。

答えて

0

これは、入力クリックでトリガーするTooltipを定義することで可能です。ツールチップを使ってこれを行うのが良いことは、(サンプルアプリケーションのように)トランジションアニメーションを使用できることです。以下は、モバイルサンプルアプリから抽出されたスニペットです:

Tooltip tip = new Tooltip(mContext); 
    tip.setBackgroundColor(Color.parseColor("#f39c12")); 

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
     tip.setEnterAnimation(PropertyValuesHolder.ofFloat(View.ALPHA, 1)).setDuration(150); 
     tip.setExitAnimation(PropertyValuesHolder.ofFloat(View.ALPHA,0)).setDuration(150); 
    } 

    mChart.setTooltips(tip); 

あなたの第二の問題は、あなたは明らかにあなたが明らかにしたくないラベルフォーマットを定義しているということだけです。ここに:

.setLabelsFormat(new DecimalFormat("##'M'"));