RecyclerView中TextView文本颜色改变

10
制作一个足球应用,我有一些活动、片段和可滚动视图(RecyclerViews),但在这种情况下文本的颜色改变了: enter image description here 片段正确显示了徽标和名称。
但是在可滚动视图中,你几乎看不到球员的名字,因为它太白了,另外还有3个小文本也很难读取。 它看起来像是文本的颜色改变了以适应黑色主题,而在我的整个应用程序中,它是默认的Theme.AppCompat.Light.DarkActionBar。
在编辑时一切看起来都很好: enter image description here 一个视图持有者的代码也看起来没问题:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textStyle="bold"
        android:text="12: Tyler Blackett"
        android:id="@+id/txt_players_name"
        android:layout_marginLeft="12dp"
        android:layout_marginStart="12dp"
        android:layout_marginTop="8dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:id="@+id/txt_players_position"
        android:layout_below="@+id/txt_players_name"
        android:layout_alignLeft="@+id/txt_players_name"
        android:layout_alignStart="@+id/txt_players_name" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:id="@+id/txt_players_nationality"
        android:layout_below="@+id/txt_players_position"
        android:layout_alignLeft="@+id/txt_players_position"
        android:layout_alignStart="@+id/txt_players_position" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:id="@+id/txt_players_value"
        android:layout_below="@+id/txt_players_nationality"
        android:layout_alignLeft="@+id/txt_players_nationality"
        android:layout_alignStart="@+id/txt_players_nationality" />


</RelativeLayout>

编辑: 一些来自适配器的代码。我在多个地方(情况0、1、2)使用这个适配器,只有在这种情况下它才改变文本的颜色:

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        RecyclerView.ViewHolder viewHolder = null;
        switch(viewType){
            case 0:
                view = inflater.inflate(R.layout.row_teams, parent, false);
                viewHolder = new ViewHolder0(view);
                break; //working fine
            case 1:
                {...} //working fine
            case 2:
                {...} //working fine
            case 3:
                view = inflater.inflate(R.layout.row_players, parent, false);
                viewHolder = new ViewHolder3(view);
        }
        return viewHolder;
    }

在onBind方法中,我只是将setText方法调用到TextView上,没有什么不寻常的。 Holder类:


Holder类。
public class ViewHolder3 extends RecyclerView.ViewHolder {

        TextView mPlayerName;
        TextView mPosition;
        TextView mNationality;
        TextView mValue;

        public ViewHolder3(View itemView) {
            super(itemView);
            mPlayerName = (TextView) itemView.findViewById(R.id.txt_players_name);
            mPosition = (TextView) itemView.findViewById(R.id.txt_players_position);
            mNationality = (TextView) itemView.findViewById(R.id.txt_players_nationality);
            mValue = (TextView) itemView.findViewById(R.id.txt_players_value);
        }

1
或者...只需在XML中为您的TextView设置android:textColor属性。 - Jonas Czech
getView()?那是ListView的东西。你是指onCreateViewHolder,我已经编辑了帖子并添加了更多的代码。android:textColor只是一个解决方法,我想知道为什么会出现这个问题。 - JoKr
你尝试过设置TextView的文本颜色吗?(你也可以通过代码实现)? - Jonas Czech
2
请标记Alvaro的答案为正确答案。JonasCz的回答不是一个答案,而是在抹去问题。当您已经为应用程序设置了主题颜色时,没有必要为每个文本视图设置文本颜色。最终代码如下:\n myAdapter = new MainRVAdapter(MainActivity.this,getData()); - 9patchcoder
我正在进行的这个项目不知道丢到哪里去了,所以我无法检查它,但我非常确定这是Alvaro指出的问题,并且已被接受为答案。谢谢提醒。 - JoKr
显示剩余5条评论
2个回答

21

我之前遇到了同样的问题,原因是我在 RecyclerView 中使用的是由 ApplicationContext 创建的 LayoutInflater,而不是当前的 Activity

将其更改为从 Activity 创建后,RecyclerView 的颜色恢复为黑色。


1
如果可以的话,我希望能把这个答案翻译成中文100遍。谢谢! - frankelot
好的,你明白了!为什么会发生这种情况?有什么原因吗? - superUser

1
在您的XML布局中,只需为TextView设置android:textColor属性即可。这样可以根据需要更改文本的颜色。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接