achartengine - adding External ImageButtons for zoom on view next to chart causes strange UI behavior

非 Y 不嫁゛ 提交于 2020-01-03 04:50:28

问题


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:


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.



来源:https://stackoverflow.com/questions/9021959/achartengine-adding-external-imagebuttons-for-zoom-on-view-next-to-chart-cause

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!