android - 如何在achartengine android中的饼图右侧显示图例

标签 android android-layout achartengine

我正在使用 achartengine 教程中的饼图 View 。这就是我想要的。

enter image description here

我希望图例(即通过/失败)显示在饼图的右侧,如图所示。在 achartengine 的演示示例中,它们是底部对齐的。如何让他们向右?请帮忙!

最佳答案

下面的代码对我有用。但我认为最好创建一个 RecyclerView 作为图例,而不是使用 MPAndroidChart 类提供的那个。
我做了什么:

  • 创建 RecyclerView 和 celda_recycler_legend.xml:
  • 创建一个扩展 RecyclerView.Adapter 类的 AdapterLegend.java 脚本,以便能够使用带有图例的 RecyclerView。在这个脚本上,我添加了一个 LegendViewHolder 实例,它扩展了 RecyclerView.ViewHolder,并配置了 celda_recycler_legend.xml。

  • 适配器图例
     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
    希望这对你有用!

    关于android - 如何在achartengine android中的饼图右侧显示图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553067/

    相关文章:

    Android约束布局截断textview中的文字

    安卓 "Valid XML document must have a root tag at line"

    android - Java-Android/如何为AchartEngine图表动态添加图表

    android - 使用 AChartEngine 库的条形图

    java - 更新应用程序时的 Alarmmanager

    android - 多个 super 用户命令 Android

    java - 更改 Fragment 方向布局时 addView() 中出现错误

    android - 始终显示一个按钮

    android - 软键盘的 POPUP 布局

    android - 如何设置当前主题的边距颜色?