2015-03-02 34 views
6

Làm một số ứng dụng bóng đá, tôi có vài Activities, FragmentsRecyclerViews, nhưng chỉ trong này màu một trường hợp văn bản của tôi đã thay đổi: enter image description hereRecyclerView TextView màu sắc của văn bản thay đổi

Đoạn đang hiển thị logo và tên thích hợp.

Nhưng trong RecyclerView, bạn hầu như không thể thấy tên người chơi vì nó quá trắng và 3 văn bản nhỏ khác cũng khó đọc. Đó là cái nhìn như văn bản thay đổi màu sắc của nó để phù hợp với một số chủ đề màu đen, trong khi thông qua tất cả các ứng dụng của tôi nó là mặc định Theme.AppCompat.Light.DarkActionBar

Khi chỉnh sửa tất cả mọi thứ có vẻ tốt đẹp:

enter image description here

và mã của một điểm giữ cũng có vẻ tốt đẹp:

<?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> 

EDIT: Một số mã từ adapter. Tôi đang sử dụng bộ chuyển đổi này nhiều lần (trường hợp 0,1,2) và chỉ trong một trường hợp này nó đang thay đổi màu sắc của văn bản:

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; 
    } 

Trong onBind tôi chỉ cần gọi .setText để TextView, không có gì bất thường ở đó. Chủ lớp:

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

Đăng phương thức 'getView()' của recyclerView của bạn. Có lẽ, bạn đang chuyển 'null' làm cha mẹ' ViewGroup' khi tăng bố cục XML của bạn. – JonasCz

+1

Hoặc ... Chỉ cần đặt thuộc tính 'android: textColor' cho TextView của bạn trong XML. – JonasCz

+0

getView()? Đó là điều ListView. Ý bạn là onCreateViewHolder, tôi đã chỉnh sửa bài đăng với nhiều mã hơn. 'android: textColor' là giải pháp, tôi muốn biết tại sao tôi gặp vấn đề này – Gudin

Trả lời

11

Tôi chỉ có cùng một vấn đề, và đó là vì tôi đã sử dụng trong RecyclerView một LayoutInflater tạo ra với Context của Application, thay vì hiện nay Activity.

Sau khi thay đổi để tạo từ Activity, các màu RecyclerView trở lại màu đen.

+1

Tôi muốn câu trả lời này gấp 100 lần nếu có thể. cảm ơn! – feresr

+0

nó hoạt động cho tôi .. cảm ơn u ... nhưng bạn có thể giải thích điều này .. – mithileshssingh

1

Chỉ cần thiết lập thuộc tính android:textColor cho TextView của bạn trong cách bố trí XML của bạn. Điều này sẽ cho phép bạn thay đổi màu của văn bản nếu cần.

Các vấn đề liên quan