Android アプリで achartengine を使用して積み上げ棒グラフ (これに似たもの) を表示しています。を使用してオブジェクトChartFactory.getBarChartView
を取得し、それをレイアウトに配置します。GraphicalView
私の目的は、ユーザーが積み重ねられたバーの 1 つに触れたときに、ユーザーにタッチ フィードバックを提供することです。ユーザーがタッチしたバーの UI プロパティ (おそらく色) の一部を変更することで、これを行うつもりです。ただし、積み上げ棒全体を触れたものとして指定したい。これは、バーの選択されたセクションだけを指定するのとは対照的です。
デモの SalesStackedBarChart の例を取り上げて、たとえば 3 月のバー全体 (2008 年 3 月のセクションだけでなく) を指定したいと思います。
オブジェクトのセットアップ方法とメソッドの使用方法は既に知っていonClickListener
ます。ただし、このアプローチを使用すると、すべてのバーで同じセクションを選択済みとして指定することしかできませんでした。たとえば、12 本のバーすべての 2008 年のセクションが強調表示されます。GraphicalView
getCurrentSeriesAndPoint()
質問:
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;
}
}
});