我正在使用MPAndroidChart(https://github.com/PhilJay/MPAndroidChart)库来绘制一个简单的折线图,其中我有一条由图标表示的点(值)连接的线。
我正在使用OnChartValueSelectedListener:
//initialization
mChart.setOnChartValueSelectedListener(this);
//later in class
public void onValueSelected(Entry e, Highlight h){
Log.i(TAG, "Something selected.");
}
@Override
public void onNothingSelected() {
Log.i(TAG, "Nothing selected.");
}
但就我而言,无论我在哪里点击,我几乎总是选择ValueSelected而不是Nothingselected。
所以,我点击了一个空白区域,但仍然选择了ValueSelected。“e”参数(条目)是离我单击的点最近的参数。
我正在寻找一种解决方案,以检测我是否真的单击了图表上的图标,或者是否以某种方式更改了ValueSelected行为,使其仅在我这样做时才会引发。
看看这个例子。。。应该能解决你的问题
public class MpAndroidLineChartActivity extends AppCompatActivity {
LineChart mChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mp_android_line_chart);
mChart = (LineChart) findViewById(R.id.bar_chart);
mChart.getDescription().setEnabled(false);
mChart.setPinchZoom(false);
mChart.setDrawGridBackground(false);
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setDrawGridLines(false);
leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
mChart.getAxisRight().setEnabled(false);
mChart.getLegend().setEnabled(false);
float[] val = {10, 20, 30, 40, 50};
ArrayList<Entry> entryList = new ArrayList<>();
for (int i = 0; i < val.length; i++) {
entryList.add(new BarEntry(i, val[i]));
}
LineDataSet set1 = new LineDataSet(entryList, "entryList");
set1.setColor(Color.BLUE);
set1.setDrawValues(false);
set1.setColor(Color.BLACK);
set1.setCircleColor(Color.BLACK);
set1.setCircleRadius(6f);
set1.setDrawCircleHole(false);
ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
dataSets.add(set1);
LineData data = new LineData(dataSets);
mChart.setData(data);
mChart.setScaleEnabled(false);
mChart.invalidate();
mChart.setMaxHighlightDistance(6f);
mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, Highlight h) {
Log.d("onValueSelected", "onValueSelected");
}
@Override
public void onNothingSelected() {
Log.d("onNothingSelected", "onNothingSelected");
}
});
}
}
请确保将这些行添加到代码中。。。
//Sets the radius of the drawn circles.
set1.setCircleRadius(6f);
和
//Sets the maximum distance in screen dp a touch can be away from an entry to cause it to get highlighted.
mChart.setMaxHighlightDistance(6f);
这些方法几乎不言自明。即使您使用自定义图标代替圆圈,您也可以使用“MaxHighlightDistance”数字来解决您的问题。
在这种情况下,将“CircleRadius”和“MaxHighlight远程”都设为6f,只有当用户准确单击绘制的圆时,才会调用“onValueSelected”。您可以将“MaxHighlight远程”调整为10f或12f,以便在单击时为用户提供一些出错空间。
我有一个定制的摄像头活动,应该只在纵向模式下拍照,但是在三星设备上,照片总是在我的nexus设备上以横向模式显示,图片在纵向模式下正确显示。下面是我设置相机参数和方向的方法。此初始化预览在方法。
我想将JTable中的行选择限制为仅2行。如果用户尝试选择第三行(Ctrl单击),则应通过编程方式取消选择表中最早的选择。为了实现这一点,我在表中添加了一个ListSelectionListener。在下面的示例中,似乎不起作用。 如果有更简单或更优雅的方法来达到同样的效果,请给出建议。
我正在使用日历视图来选择产品交付日期。我想在日历视图中仅显示当前日期的一个完整月份? 比如说: 今天的日期:2019年4月4日-日历视图应仅显示至2019年5月31日,不应显示上个月。 另一个例子:如果今天的日期是:2019年8月15日——日历视图应该只显示到2019年9月30日,而不应该显示上个月。 这可能吗?如果是这样的话,当我点击箭头时,如何显示默认日历视图是显示所有年份的正负?
我目前正在重构一个用Symfony 3编写的应用程序,并且严重依赖ORM,我一直在尝试获取一个包含所选列索引的对象/数组。 现在我对PHP PDO相当熟悉,我记得查询结果的基本获取如下所示 (根据我的查询)它会给我一个类似于下面的数组 在理论方面,我尝试使用几个具有水合参数的内置函数 运气不好,我最后得到了这样的东西 有人能帮我或者给我指出正确的方向吗?如何正确地解决这个问题? ----更新了问题
我正在尝试将react-modal添加到映射数组的项中。当我单击映射项上的onClick事件时,它会同时打开所有的情态动词。我想要的是顶部开放选择的模式一次。 在这里,我将映射Employee的数组,并使用onClick模式为每个数组添加一个按钮。 null null 下面是切换模型的状态 null null 现在,如果我点击按钮,它将打开所有的模式,但我只想打开一个选定的模式。任何帮助都将不胜感
我想做一个计算器程序,我只允许输入数字,但我不知道怎么做,你能告诉我怎么做吗。我在别处什么也没找到。以下是我的源代码: