我想以编程方式在Android程序中为2 TextView设置Params,但是我遇到了问题。这是相关的代码段:
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);
}
现在的问题是;文字的颜色已设置,但重力未设置。 我该如何解决?
TextView Cioscos及其相应的文本应显示在活动的右侧,而不是在活动的左侧的Peter文本下方。
这是我的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();
}
}
仅该消息显示在右侧,但仍然不显示在屏幕的右侧。
XML文件:
<?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:orientation="vertical"
android:visibility="visible">
<TextView
android:id="@+id/tv_autore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="Autore"
android:textColor="@color/colorPrimaryDark"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_messaggio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Messaggio" />
</LinearLayout>
答案 0 :(得分:2)
当我们没有TextView
的布局时,很难回答,该布局应该在您的ChatViewHolder
中。
关于gravity
我能说的是,gravity
有两种类型。
LayoutParams
中的重力等于xml中的layout_gravity
(TextView
的布局)View
中的引力等于xml中的gravity
(在此视图中,子视图的布局,在您的情况下: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);
}
还要在您的xml文件中将TextViews
设置为match_parent
我与kotlin一起工作,所以语法可能不正确?抱歉,如果我错过了任何事情,您会得到图片...