ДИАГРАММА MP во фрагменте диалогового окна

#java #android #mpandroidchart #android-dialogfragment

Вопрос:

Я пытаюсь настроить диаграмму MP во фрагменте диалогового окна, но не получаю желаемых результатов. Я не получаю никаких небольших изменений, но я получаю то, что действительно хочу в деятельности. Я также попытался подключить отладчик, но не смог изменить цвет линии или градиент графика.

 lt;?xml version="1.0" encoding="utf-8"?gt; lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:background="@drawable/graphbackground_bg"  gt;   lt;LinearLayout  android:layout_marginTop="5dp"  android:layout_marginLeft="5sp"  android:layout_marginRight="5sp"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:gravity="center"  android:orientation="vertical"gt;   lt;com.github.mikephil.charting.charts.LineChart  android:layout_width="350dp"  android:layoutDirection="locale"  android:layout_gravity="center"  android:layout_height="600dp"  android:id="@ id/symbolChart"/gt;  lt;/LinearLayoutgt; lt;/LinearLayoutgt;  

Фрагмент

 public class ScripChartFragment extends DialogFragment {  LineChart lineChart;  LineData lineData;  LineDataSet set1;  private Context context;  View view;  Listlt;Entrygt; entryList = new ArrayListlt;gt;();  public Drawable drawablePositive;   public ScripChartFragment() {  // Required empty public constructor  }   @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);   }   @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {  // Inflate the layout for this fragment  view = inflater.inflate(R.layout.fragment_scripchart, container, false);  getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));  context = getContext();   drawablePositive = ContextCompat.getDrawable(context, R.drawable.symbolchart_bg);  lineChart = view.findViewById(R.id.symbolChart);   setData(20,3);  lineChart.getDescription().setEnabled(true);  lineChart.setDrawGridBackground(true);  lineChart.setDragEnabled(true);  lineChart.getLegend().setEnabled(true);  lineChart.setScaleEnabled(true);  lineChart.setScaleYEnabled(true);  lineChart.setScaleXEnabled(true);  lineChart.setDrawGridBackground(false);  lineChart.getXAxis().setEnabled(true);  lineChart.getLineData().setDrawValues(true);  lineChart.getXAxis().setDrawGridLines(true);  lineChart.getXAxis().setDrawAxisLine(true);  lineChart.getAxisLeft().setDrawGridLines(true);  lineChart.getAxisRight().setDrawGridLines(true);  lineChart.getAxisRight().setDrawZeroLine(true);  lineChart.getAxisLeft().setDrawZeroLine(true);  lineChart.getAxisRight().setDrawLabels(true);  lineChart.getAxisLeft().setDrawLabels(true);  lineChart.getAxisLeft().setEnabled(true);  lineChart.getAxisRight().setEnabled(true);  lineChart.setMaxHighlightDistance(150);  lineChart.setViewPortOffsets(0, 0, 0, 0);  lineChart.setTouchEnabled(false);  lineChart.setPinchZoom(false);  lineChart.notifyDataSetChanged();   LineDataSet lineDataSet = new LineDataSet(entryList,"BuySell");  lineData = new LineData(lineDataSet);  lineChart.setData(lineData);   return view;  }   private void setData(int count, float range) {   entryList = new ArrayListlt;gt;();   LineData data;   for (int i = 0; i lt; count; i  ) {   float val = (float) (Math.random() * range) - 30;  entryList.add(new Entry(i, val));  }   set1 = new LineDataSet(entryList, "DataSet 1");  set1.setFillDrawable(drawablePositive);  set1.setFillAlpha(100);  set1.setFillColor(Color.RED);  set1.setColor( Color.RED);  set1.setCircleColor(getResources().getColor(R.color.yellow));  set1.setLineWidth(5f);  set1.setDrawValues(false);   set1.setFillFormatter(new IFillFormatter() {  @Override  public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {  return lineChart.getAxisLeft().getAxisMinimum();   }  });  ArrayListlt;ILineDataSetgt; dataSets = new ArrayListlt;gt;();  dataSets.add(set1);  data = new LineData(dataSets);    lineChart.setData(data);   } }  

Ответ №1:

Внутри вашего onCreateView метода, внизу, вы написали это:

   LineDataSet lineDataSet = new LineDataSet(entryList,"BuySell");  lineData = new LineData(lineDataSet);  lineChart.setData(lineData);  

Закомментируйте / удалите эти 3 строки. Тогда вы получите результат, подобный этому:введите описание изображения здесь

Объяснение:

У вас есть 2 объекта LineDataSet,

  1.  set1 = new LineDataSet(entryList, "DataSet 1");  

и

  1.  LineDataSet lineDataSet = new LineDataSet(entryList,"BuySell");  

И вы устанавливаете эти свойства цвета для первого объекта(«Набор данных 1»). Но затем вы показываете 2-й объект («BuySell») на графике. Вот почему удаление этих 3 строк решает проблему.

Комментарии:

1. Большое тебе спасибо, теперь все работает нормально. не могли бы вы, пожалуйста, помочь мне еще в одном деле? set1.setFillDrawable(рисуемый положительный); эта строка также не работает во фрагменте диалога, но работает в действии.