achartengine — добавление External ImageButtons для масштабирования изображения рядом с диаграммой вызывает странное поведение пользовательского интерфейса

Я хотел, чтобы кнопка находилась в верхней части диаграммы.

ПРОБЛЕМА:

Когда я нажимаю кнопку, клон представления диаграммы появляется сжатым сзади нажатой кнопки. Он существует только одну секунду, а затем исчезает. Посмотрите на принтскрин...

ссылка на изображение

Кто-нибудь знает, почему это происходит?

Прикрепляю фиктивный исходный код:

макет (основной.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>

и активность:

    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);
        }
    }
}

Спасибо, Тони


person toni    schedule 26.01.2012    source источник


Ответы (1)


Тони также разместил этот вопрос в системе отслеживания проблем aChartEngine, где на него был дан ответ (в определенной степени).

Ссылка на выпуск: http://code.google.com/p/achartengine/issues/detail?id=171

Резюме решения:

renderer.setInScroll(true);

который, кажется, заботится об артефактах.

person Chris Knight    schedule 07.04.2012