Параметры TextView в LinearLayout не работают программно

1

Я хочу программно установить параметры для 2 TextView в моей программе Android, но у меня проблема. Это интересующий кусок кода:

private void setChatItemStyle(Boolean mineMsg, ChatViewHolder holder) {

        if(mineMsg) {
            holder.params.gravity = Gravity.END;
            holder.autore.setTextColor(Color.BLUE);
        }else{
            holder.params.gravity = Gravity.START;
            holder.autore.setTextColor(Color.MAGENTA);
        }

        holder.autore.setLayoutParams(holder.params);
        holder.messaggio.setLayoutParams(holder.params);
    }

Теперь проблема в том, цвет текста установлен, а гравитация - нет. Как я могу это исправить?

Текстовые киоски с соответствующим текстом должны отображаться справа, а не под текстом Питера слева от упражнения.

Это мой ChatViewHolder:

public class ChatViewHolder extends RecyclerView.ViewHolder {

        TextView autore, messaggio;
        LinearLayout.LayoutParams params;

        public ChatViewHolder(View itemView) {
            super(itemView);

            autore = itemView.findViewById(R.id.tv_autore);
            messaggio = itemView.findViewById(R.id.tv_messaggio);
            params = (LinearLayout.LayoutParams) autore.getLayoutParams();
        }
    }

Изображение 174551 Справа только сообщение, но оно не идет справа от экрана.

Теги:
android-linearlayout

1 ответ

2

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

Что я могу сказать о gravity Есть два типа gravity.

  1. Гравитация в LayoutParams равна layout_gravity в xml (макет для TextView)
  2. Тяжесть в View равно gravity в XML (макет для детей внутри этой точки зрения, в вашем случае: текст внутри TextView)

В твоем случае:

  1. будет работать, если у вас есть TextView как WRAP_CONTENT по ширине
  2. будет работать, если у вас есть TextView как MATCH_PARENT по ширине

Один из способов сделать это в вашем случае:

private void setChatItemStyle(Boolean mineMsg, ChatViewHolder holder) {

    int gravity = Gravity.START;
    if (mineMsg) {
        gravity = Gravity.END;
        holder.autore.setTextColor(Color.BLUE);
    } else {
        holder.autore.setTextColor(Color.MAGENTA);
    }

    holder.autore.setGravity(gravity);
    holder.messaggio.setGravity(gravity);
}

Также установите TextViews для match_parent в вашем XML файле

Я работаю с kotlin, поэтому синтаксис может быть неправильным? Извините, если я что-то пропустил, вы получите картину...

  • 0
    Добавьте ChatViewHolder + XML-файл в свой вопрос
  • 0
    Хорошо, я отредактирую ваш пост с кодом, а также отправьте мне ваш xml
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню