1

Android アプリで achartengine を使用して積み上げ棒グラフ (これに似たもの) を表示しています。を使用してオブジェクトChartFactory.getBarChartViewを取得し、それをレイアウトに配置します。GraphicalView

私の目的は、ユーザーが積み重ねられたバーの 1 つに触れたときに、ユーザーにタッチ フィードバックを提供することです。ユーザーがタッチしたバーの UI プロパティ (おそらく色) の一部を変更することで、これを行うつもりです。ただし、積み上げ棒全体を触れたものとして指定したい。これは、バーの選択されたセクションだけを指定するのとは対照的です。

デモの SalesStackedBarChart の例を取り上げて、たとえば 3 月のバー全体 (2008 年 3 月のセクションだけでなく) を指定したいと思います。

オブジェクトのセットアップ方法とメソッドの使用方法は既に知っていonClickListenerます。ただし、このアプローチを使用すると、すべてのバーで同じセクションを選択済みとして指定することしかできませんでした。たとえば、12 本のバーすべての 2008 年のセクションが強調表示されます。GraphicalViewgetCurrentSeriesAndPoint()

質問:

1 つの積み上げ棒グラフのすべてのセクションの外観を変更するにはどうすればよいですか?

これが私のコードです。設計どおりに動作します (つまり、12 本のバーすべてで選択されたセクションを灰色に設定します) が、これは私が望んでいるものではありません。

mGraph.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                SeriesSelection seriesSelection = mGraph.getCurrentSeriesAndPoint();
                if (seriesSelection == null) {
                    Toast.makeText(mContext, "No chart element was long pressed",
                            Toast.LENGTH_SHORT).show();
                    return false; // no chart element was long pressed, so let
                                  // something
                    // else handle the event
                } else {
                    SimpleSeriesRenderer renderer = mMultiRenderer.getSeriesRendererAt(seriesSelection.getSeriesIndex());

                    Toast.makeText(mContext, "Chart element in series index "
                            + seriesSelection.getSeriesIndex() + " data point index "
                            + seriesSelection.getPointIndex() + " was long pressed",
                            Toast.LENGTH_SHORT).show();
                    renderer.setColor(Color.LTGRAY);                      
                    return true; 
                }
            }
        });
4

1 に答える 1

1

系列の色を設定すると、その系列のすべてのバーの色が変更されます。

考えられる解決策の 1 つは、選択したものとして強調表示するバーのみを含む追加のシリーズを作成することです。非常にトリッキーです。

于 2013-05-15T14:39:13.810 に答える