要实现这个时间轴界面,你可以使用RecyclerView来展示待办事项,并使用自定义的ItemDecoration来绘制时间轴的竖线和小圆点。以下是一个简单的示例代码:

  1. 首先,在你的布局文件中添加一个RecyclerView和一个竖线的View:
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<View
    android:layout_width="2dp"
    android:layout_height="match_parent"
    android:background="@android:color/black" />
  1. 创建一个自定义的ItemDecoration类,用于绘制时间轴的竖线和小圆点:
public class TimelineItemDecoration extends RecyclerView.ItemDecoration {
    private final Paint paint;
    private final int radius;

    public TimelineItemDecoration(Context context) {
        paint = new Paint();
        paint.setColor(Color.BLACK);
        radius = context.getResources().getDimensionPixelSize(R.dimen.timeline_dot_radius);
    }

    @Override
    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View child = parent.getChildAt(i);
            int position = parent.getChildAdapterPosition(child);

            int centerX = child.getLeft() / 2;
            int centerY = child.getTop() + child.getHeight() / 2;

            // 绘制竖线
            c.drawLine(centerX, 0, centerX, centerY - radius, paint);

            // 绘制小圆点
            c.drawCircle(centerX, centerY, radius, paint);
        }
    }
}
  1. 创建一个自定义的RecyclerViewAdapter来展示待办事项:
public class TodoAdapter extends RecyclerView.Adapter<TodoAdapter.ViewHolder> {
    private List<String> todoList;

    public TodoAdapter(List<String> todoList) {
        this.todoList = todoList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_todo, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        String todo = todoList.get(position);
        holder.textView.setText(todo);
    }

    @Override
    public int getItemCount() {
        return todoList.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView textView;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
        }
    }
}
  1. 在你的Activity或Fragment中,设置RecyclerView的LayoutManager、Adapter和ItemDecoration:
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new TodoAdapter(todoList));
recyclerView.addItemDecoration(new TimelineItemDecoration(this));

这样就可以实现一个简单的时间轴界面了。你可以根据需要自定义ItemDecoration的样式和RecyclerViewAdapter的布局。

Android Studio时间轴界面开发指南:实现时间顺序排列的待办事项列表

原文地址: https://www.cveoy.top/t/topic/Sq0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录