代码之家  ›  专栏  ›  技术社区  ›  astric mobiles

根据用户在RecyclerView中选择的选项,为ActionBar标题设置不同的颜色

  •  0
  • astric mobiles  · 技术社区  · 7 年前

    我目前有一个回收器视图,当用户单击视图中的按钮时,它会进入一个新的活动。我想将新活动的操作栏标题设置为回收者视图中的颜色。因此,在我下面的示例中,我希望能够将“London Overground”标题更改为与Recycler view项目相同的颜色。 enter image description here

    我有一个保存RGB颜色值的数组,它在我的onBindViewHolder方法中。我能把名字传过去,只是颜色不对。请看下面我的代码。

    线性适配器

    public class LineAdapter extends RecyclerView.Adapter<LineAdapter.LineViewHolder> {
    
    
        private List<Line> lineList;
    
        public LineAdapter(List<Line> lineList) {
            this.lineList = lineList;
        }
    
        @Override
        public LineViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.line_list_row, parent, false);
    
            return new LineViewHolder(itemView);
        }
    
        @Override
        public void onBindViewHolder(LineViewHolder holder, int position) {
            holder.lineName.setText(lineList.get(position).getLineName());
            holder.lineStatus.setText(lineList.get(position).getLineStatus());
    
    
    
            Integer[] colors = {Color.rgb(179, 99, 5),Color.rgb(227, 32, 23),Color.rgb(255, 211, 0),Color.rgb(0, 120, 42),Color.rgb(0, 164, 167),Color.rgb(243, 169, 187),Color.rgb(160, 165, 169),Color.rgb(238, 124, 14),Color.rgb(155, 0, 86),Color.rgb(0, 0, 0),Color.rgb(0, 54, 136),Color.rgb(113, 86, 165),Color.rgb(0, 152, 212),Color.rgb(149, 205, 186)};
            holder.lineName.setBackgroundColor(colors[position]);
        }
    
        @Override
        public int getItemCount() {
            return lineList.size();
        }
    
        public class LineViewHolder extends RecyclerView.ViewHolder {
            public TextView lineName;
            public TextView lineStatus;
    
            public LineViewHolder(View view) {
                super(view);
                lineName = (TextView) view.findViewById(R.id.lineName);
                lineStatus = (TextView) view.findViewById(R.id.lineStatus);
            }
        }
    }
    

    我的onCLick听众

     recyclerView.addOnItemTouchListener(new touchListener(getApplicationContext(), recyclerView, new clickListener() {
                @Override
                public void onClick(View view, int position) {
    
                  String a = ( lineList.get(position).getLineName());
    
                    // Toast.makeText(line_activity.this, a, Toast.LENGTH_SHORT).show();
                   Intent intent = new Intent(line_activity.this, line_info.class);
                    intent.putExtra("string", a);
                    startActivity(intent);
                 }
                }
               )
            );
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Dragos Rachieru    7 年前

    警告:不要创建方法变量,如果您希望使用颜色的常量数组,请使用静态final int[]颜色使数组保持恒定; 建议:不要像这样存储颜色,将它们放在res/values/colors中。类xml

    <color name="color1">#FFFFFF</color>
    

    然后使用:

    context.getColor(R.color.color1);
    

    在布局中,在所有内容之前放置一个工具栏,该工具栏的宽度和?属性/操作栏大小表示高度。

    Toolbar toolbar = findViewById(R.id.yourToolbarId);
    setSupporrActionBar(toolbar);
    

    toolbar.setBackgroundColor(getColor(R.color.color1));
    
        2
  •  0
  •   Travor Liu    7 年前

    还有另一种通过使用设置文本颜色的方法 Html.fromHtml() . 您可以自定义文本。您可以在使用时设置文本颜色:

    Bundle b=getIntent().getExtras();
    String str=b.getString("string");
    String color=b.getString("color");
    getActionBar().setTitle(Html.fromHtml("<font color\""+color+"\">"+str+"</font>"));
    

    这可能有助于设置你的文本颜色,它几乎适用于android中的所有文本。 因此,您需要在 RecyclerView ,然后通过意向发送。