Я хочу программно установить параметры для 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();
}
}
Справа только сообщение, но оно не идет справа от экрана.
Трудно ответить, когда у нас нет макета для TextView
который должен быть в вашем ChatViewHolder
.
Что я могу сказать о gravity
Есть два типа gravity
.
LayoutParams
равна layout_gravity
в xml (макет для TextView
)View
равно gravity
в XML (макет для детей внутри этой точки зрения, в вашем случае: текст внутри TextView
)В твоем случае:
TextView
как WRAP_CONTENT
по ширине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, поэтому синтаксис может быть неправильным? Извините, если я что-то пропустил, вы получите картину...