Intereting Posts
Как отобразить диалог из службы Как я могу определить, будет ли Android-телефон в тихом режиме программным VideoView с файлами cookie (или заголовками) Ошибка Eclipse DDMS «Невозможно связать с локальным 8600 для отладчика» Отправить событие касания от АБР к устройству Подписание сертификата на Android с Robospice Панель инструментов не будет разрушаться с помощью Scrollview в качестве дочернего элемента CoordinatorLayout Как создать круглое изображение с использованием андроида? ViewPager в android выполняет полный экран? GetWidth () и getHeight возвращают ноль после onMeasure () (определенные устройства) Почему большинство пользовательских интерфейсов однопоточных? Фокусируемый EditText внутри ListView Как создать приложение, которое позволяет только горизонтальную ориентацию? Панель инструментов Android для всплывающих окон и темы Создание оптимизированной / подходящей для OCR активности камеры

Пользовательский 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 своего родителя и, следовательно, исправить вашу проблему.