我正在使用 achartengine 教程中的饼图视图。这就是我想要的。
我希望图例(即通过/失败)显示在饼图的右侧,如图所示。在 achartengine 的演示示例中,它们是底部对齐的。如何让他们向右?请帮忙!
我正在使用 achartengine 教程中的饼图视图。这就是我想要的。
我希望图例(即通过/失败)显示在饼图的右侧,如图所示。在 achartengine 的演示示例中,它们是底部对齐的。如何让他们向右?请帮忙!
下面的代码对我有用。但我认为最好创建一个 RecyclerView 作为图例,而不是使用 MPAndroidChart 类提供的那个。我做了什么:
适配器图例
class AdapterLegend extends RecyclerView.Adapter {
private ArrayList<String> legends;
private ArrayList<Integer> colors;
public AdapterLegend(ArrayList legends, ArrayList<Integer> colors) {
this.legends = legends;
this.colors = colors;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
return new LegendViewHolder(layoutInflater.inflate(R.layout.celda_recycler_legend, parent, false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
LegendViewHolder legendViewHolder = (LegendViewHolder) holder;
legendViewHolder.LoadLegend(legends.get(position), colors.get(position));
}
@Override
public int getItemCount() { return legends.size(); }
}
图例ViewHolder
class LegendViewHolder extends RecyclerView.ViewHolder {
private final TextView legendText;
private final ImageView legendColorLabel;
public LegendViewHolder(@NonNull View itemView) {
super(itemView);
legendText = itemView.findViewById(R.id.legendTextView);
legendColorLabel = itemView.findViewById(R.id.legendLabelColor);
}
public void LoadLegend(String legend, int legendColor){
legendText.setText(legend);
legendColorLabel.setBackgroundColor(legendColor);
}
}
我使用AdapterLegend实例设置RecyclerView
legendRecyclerView = recountDataLayout.findViewById(R.id.chartLegendRecycler);
legendRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
https://github.com/PhilJay/MPAndroidChart/issues/2478#issuecomment-378566623
希望这对你有用!