2015-03-02 192 views
6

使一些足球的应用程序,我有几个ActivitiesFragmentsRecyclerViews,但只是在我的文字这一情况下改变颜色: enter image description here文字RecyclerView TextView的颜色改变

的片段显示适当的标志和名称。

但在RecyclerView中,您几乎看不到球员的名字,因为它太白了,另外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类:

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); 
     } 
+0

发布您的recyclerView的'getView()'方法。最有可能的是,当你扩充你的XML布局时,你传递'null'作为父'ViewGroup'。 – JonasCz 2015-03-02 19:23:32

+1

或...只需在XML中为TextView设置'android:textColor'属性即可。 – JonasCz 2015-03-02 19:26:50

+0

getView()?这是ListView的事情。你的意思是onCreateViewHolder,我用更多的代码编辑了帖子。 'android:textColor'是解决方法,我想知道为什么我会遇到这个问题 – Gudin 2015-03-02 19:58:43

回答

11

我有同样的问题,这是因为我用的不是目前的ActivityRecyclerView一个LayoutInflaterApplicationContext创建。

将其更改为从Activity创建后,RecyclerView颜色变回黑色。

+1

我想这个答案100倍以上,如果我可以。谢谢! – feresr 2016-07-26 02:03:18

+0

它适用于我..谢谢你...但你可以解释这个.. – mithileshssingh 2016-08-29 21:32:43

1

在你的XML布局只需设置android:textColor属性为您TextView。这将允许您根据需要更改文本的颜色。