Пользовательский TextView не показывает текст, но показывает только фоновый

У меня странное поведение TextView, это бьет меня, как я могу найти решение этой проблемы. У меня есть макет

<?xml version='1.0' encoding='utf-8' ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start" android:orientation="horizontal" android:visibility="visible"> <View android:id="@+id/them_avatar_spacer" android:layout_width="@dimen/avatar_size" android:layout_height="0.0dip" android:visibility="gone"/> <org.slabs.fc.chatstarter.ui.CircularImageView android:id="@+id/them_avatar" android:layout_width="@dimen/avatar_size" android:layout_height="@dimen/avatar_size" android:layout_marginLeft="5dp" android:layout_marginTop="10dp" android:src="@drawable/default_avatar" android:visibility="gone"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:gravity="start" android:orientation="vertical"> <TextView android:id="@+id/chat_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="2.0dip" android:layout_marginLeft="6.0dip" android:layout_marginTop="6dp" android:includeFontPadding="false" android:text="Title" android:textColor="@color/black_light" android:textSize="@dimen/chat_name_fontsize"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start" android:orientation="horizontal"> <TextView android:id="@+id/chat_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="63.0dip" android:autoLink="all" android:background="@drawable/selectable_balloon_left" android:clickable="true" android:lineSpacingExtra="@dimen/text_body_line_spacing" android:linksClickable="true" android:text="Every message text comes here" android:textColor="@color/black_heavy" android:textIsSelectable="false" android:textSize="@dimen/chat_text_msg_fontsize" android:visibility="visible"/> <TextView android:id="@+id/chat_time" android:layout_width="60.0dip" android:layout_height="wrap_content" android:layout_gravity="start|center" android:layout_marginLeft="-60.0dip" android:text="12:15" android:textColor="@color/black_lightest" android:textSize="@dimen/chat_timestamp_fontsize"/> </LinearLayout> </LinearLayout> </LinearLayout> 

Это дает мне желаемый макет в опции дизайна XML-редактора, как показано

Желаемый макет

Но когда я запускаю приложение, TextView с id chat_text не отображается, и я получаю результат, как показано ниже,

Странные результаты

Затем я попытался создать пользовательский TextView, который я просто создал как

 public class ChatThemTextView extends TextView { public ChatThemTextView(Context context) { super(context); } public ChatThemTextView(Context context, AttributeSet attrs) { super(context, attrs); } public ChatThemTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); ViewGroup.MarginLayoutParams margins = ViewGroup.MarginLayoutParams.class.cast(getLayoutParams()); int margin = 5; margins.topMargin = margin; margins.bottomMargin = margin; margins.leftMargin = margin; margins.rightMargin = margin; setLayoutParams(margins); } } 

В этот момент вышла другая проблема, когда я добавляю первое сообщение, которое у меня ничего не получается, но когда я добавляю второе сообщение, я получаю фоновый текст, но TextView все еще не отображается, как показано здесь.

Введите описание изображения здесь

Вы все видите, что ожидается, как результат будет получен, любая помощь будет оценена …

Обновить

ViewHolder просто прост

 public class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View itemView) { super(itemView); } } 

Класс адаптера идет здесь

 public class ChatMessageAdapter extends RecyclerView.Adapter<ViewHolder> { private List<ChatMessage> mMessageList; private Context mContext; private boolean isMe = false; public ChatMessageAdapter(Context mContext, List<ChatMessage> mMessageList){ this.mContext = mContext; this.mMessageList = mMessageList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View rootView = View.inflate(mContext, R.layout.chat_them_container, null); return new ThemMessageHolder(rootView); } @Override public void onBindViewHolder(ViewHolder holder, int position) { ThemMessageHolder messageHolder = (ThemMessageHolder) holder; messageHolder.mMessageTextView.setText(mMessageList.get(position).getMessage()); messageHolder.mSentAtTextView.setText(mMessageList.get(position).getSentAt()); Log.e("MSG_TEXT", mMessageList.get(position).getMessage()); } @Override public int getItemCount() { return mMessageList.size(); } public void clearData() { mMessageList.clear(); //clear list this.notifyDataSetChanged(); } } 

важный

Я получаю значение Sting на

 Log.e("MSG_TEXT", mMessageList.get(position).getMessage()); 

Но TextView не показывает, что String …

.gitignore –

 *.iml .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures 

И settings.gradle – это просто

 include ':app' 

Вы можете изменить:

 View rootView = View.inflate(mContext, R.layout.chat_them_container, null); 

Для того, чтобы:

 View rootView = LayoutInflater.from(mContext).inflate(R.layout.chat_them_container, parent, false); 

Он будет уважать LayoutParams своего родителя и, следовательно, исправить вашу проблему.