【问题标题】:WilliamChart Highlight Bar on click & change y-axis labelsWilliamChart 高亮条单击并更改 y 轴标签
【发布时间】:2016-12-17 09:49:12
【问题描述】:

我在 Android 应用程序中为 BarChart 使用 WilliamChart 库。我想在点击时在栏上实现高亮功能。我查看了文档和示例代码,但找不到示例应用程序如何使用此功能。

我尝试使用 barSet.getEntry(),它会在 onClick 外部更改条形颜色,但在 onClick 事件内部不起作用。一定有什么我错过了。这是用于绘制 BarChart 的代码。

    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()));

而且,我的第二个问题是 y 轴标签最后会自动附加“M”。如何在动态 y 轴值中删除或附加不同的字符?

提前致谢。

【问题讨论】:

    标签: android charts bar-chart highlight axis-labels


    【解决方案1】:

    您可以通过定义一个Tooltip 来做到这一点,该Tooltip 将在条目点击时触发。使用工具提示执行此操作的好处是它允许您使用过渡动画(如在示例应用程序中)。以下是从移动示例应用程序中提取的 sn-p:

        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'"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多