achartengine - adding External ImageButtons for zo

2019-06-14 14:45发布

I wanted to have Button on the view on the top of my chart view.

PROBLEM:

When I press the Button the clone of chart view appears squeezed at the back of pressed button.It is there for only one second and then disappears. Look at the print screen...

image link

Does anybody have a clue why this happens?

I'm attaching dummy source code:

layout (main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/chart"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" />

    <LinearLayout
        android:id="@+id/layXzoom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:orientation="horizontal"
        android:padding="5dp" >

        <Button
            android:id="@+id/btnXzoomOut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Test button" />
    </LinearLayout>

</RelativeLayout>

and activity:

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Random;

    import org.achartengine.ChartFactory;
    import org.achartengine.GraphicalView;
    import org.achartengine.chart.PointStyle;
    import org.achartengine.chart.TimeChart;
    import org.achartengine.model.TimeSeries;
    import org.achartengine.model.XYMultipleSeriesDataset;
    import org.achartengine.renderer.XYMultipleSeriesRenderer;
    import org.achartengine.renderer.XYSeriesRenderer;

    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.widget.ImageButton;
    import android.widget.LinearLayout;

    public class TestgraphActivity extends Activity {
    /** Called when the activity is first created. */
    private XYMultipleSeriesDataset mDataset;
    private XYMultipleSeriesRenderer mRenderer;
    List<double[]> values = new ArrayList<double[]>();
    private GraphicalView mChartView;
    private TimeSeries time_series;

    // chart container
    private LinearLayout layout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        layout = (LinearLayout) findViewById(R.id.chart);

        // create dataset and renderer
        mDataset = new XYMultipleSeriesDataset();
        mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mRenderer.setPointSize(3f);

        XYSeriesRenderer r = new XYSeriesRenderer();
        r.setColor(Color.GREEN);
        r.setPointStyle(PointStyle.CIRCLE);
        r.setFillPoints(true);
        mRenderer.addSeriesRenderer(r);
        mRenderer.setClickEnabled(true);
        mRenderer.setSelectableBuffer(20);
        mRenderer.setPanEnabled(true);

        time_series = new TimeSeries("test");

        mDataset.addSeries(time_series);

        fillData();

        mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer,
                "H:mm:ss");

        layout.addView(mChartView);
    }

    private void fillData() {
        long value = new Date().getTime() - 3 * TimeChart.DAY;
        for (int i = 0; i < 100; i++) {
            time_series.add(new Date(value + i * TimeChart.DAY / 4), i);
        }
    }
}

Thanks, Toni

1条回答
神经病院院长
2楼-- · 2019-06-14 15:19

toni has also posted this question on the aChartEngine issues tracker where it has been answered (to a degree).

Link to the issue: http://code.google.com/p/achartengine/issues/detail?id=171

Solution summary:

renderer.setInScroll(true);

which seems to take care of the artifacting.

查看更多
登录 后发表回答