我目前有一个Recycler View,当用户点击视图中的按钮时,它会转到一个新活动。我想将新活动的Actionbar中的Title设置为recycleler视图中的颜色。因此,在下面的示例中,我希望能够将“London Overground”标题更改为与Recycler视图项相同的颜色。
我有一个数组,它保存RGB颜色值,这是在我的onBindViewHolder方法中。我能够通过名称,而不是正确的颜色。请参阅下面的代码。
LineAdapter
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);
}
}
)
);
答案 0 :(得分:1)
警告:不要创建方法变量,如果你想要带有颜色的const数组,那么使用static final int [] colors会使你的数组保持不变; 推荐:不要存储这样的颜色,将它们放在res / values / colors.xml中,如
<color name="color1">#FFFFFF</color>
然后使用:
context.getColor(R.color.color1);
要使用可自定义的操作栏,请在styles.xml中创建AppTheme风格的父级.NoActionBar而不是DarkActionBar或现在拥有的内容。
在你的布局中放置一个工具栏,其中包含match_parent的宽度和?attr / actionBarSize的高度。
在活动中,在充气布局后添加此权限:
Toolbar toolbar = findViewById(R.id.yourToolbarId);
setSupporrActionBar(toolbar);
然后,如果要修改标题文字颜色,请使用
toolbar.setBackgroundColor(getColor(R.color.color1));
答案 1 :(得分:0)
还有另一种使用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
中记录行的颜色,然后通过意图发送它。