gpt4 book ai didi

android - OnLongClickListener 不适用于图表引擎

转载 作者:行者123 更新时间:2023-11-29 22:03:49 25 4
gpt4 key购买 nike

我正在使用 achartengine,我想在长按图表时激活操作栏中的操作模式。但是 OnLongClickListener 不工作,我到处搜索我几乎尝试了所有但我无法让它工作,我不知道为什么。这是我的代码:

mChartView.setLongClickable(true);
mChartView.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
Log.i("ClickListener", "CLICK");
return false;
}

});

但事件从未被调用,我认为这是因为图表是可滚动的但没有意义。我试过 OnClick 也没有用。唯一有效的是 OnTouch,但我无法获得长按的行为。

编辑:

或者也许是获取触摸屏状态的实际状态的任何方式,通过这种方式,我可以放置一个“计时器”,直到它达到例如 1000mS 但只有在触摸屏被触摸时,因为在 onTouch 事件中我可以只知道事件发生时触摸屏的状态,不管当前是哪个状态。

好的,这里是折线图的一些代码:

private static XYSeries input1;
private static XYMultipleSeriesDataset mDataset;
private static XYSeriesRenderer renderer1;
private static XYMultipleSeriesRenderer mRenderer;
private static GraphicalView mChartView;

mRenderer = new XYMultipleSeriesRenderer();
renderer1 = new XYSeriesRenderer();

mRenderer.setOrientation(Orientation.HORIZONTAL);
mRenderer.addSeriesRenderer(renderer1);
mRenderer.setXAxisMax(10);
mRenderer.setYAxisMax(10);
mRenderer.setAxesColor(Color.WHITE);
mRenderer.setLabelsColor(Color.WHITE);
mRenderer.setShowGrid(true);

input1 = new XYSeries("Linea");

mDataset = new XYMultipleSeriesDataset();
mDataset.addSeries(input1);

renderer1.setColor(Color.WHITE);

input1.add(4, 7);
input1.add(7, 3);
input1.add(8, 6);
input1.add(9, 2);

mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
setContentView(mChartView);

mChartView.setLongClickable(true);
mChartView.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
Log.i("Click", "LONG CLICKED CHART");
return false;
}

});

我正在尝试使用 onTouch 进​​行长按,因为我意识到如果我滑动图形,它也会被视为长按,所以我必须进行长按,但是如果我不滑动图。

最佳答案

您可以将 runnable 与 onTouchListener() 结合使用以获得与 onLongClick() 相同的效果。应该这样做:

boolean fingerStillDown = false;
final Runnable longClickRun = new Runnable(){
public void run(){
if(fingerStillDown){
Log.i("CHARTS!", "LONGCLICK!");
}
}
};
mChartView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent me){
if(me.getAction() == MotionEvent.ACTION_DOWN){
fingerStillDown = true;
//The system registers longclick at ~500ms.
mChartView.postDelayed(longClickRun, 500);
}

if(me.getAction() == MotionEvent.ACTION_UP){
fingerStillDown = false;
}


return false; //<-- I didn't test with true, but I suspect returning true
// would break the scrolling.
}
});

关于android - OnLongClickListener 不适用于图表引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com