Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LinearLayout中的TextView参数无法以编程方式工作_Android_Android Linearlayout - Fatal编程技术网

Android LinearLayout中的TextView参数无法以编程方式工作

Android LinearLayout中的TextView参数无法以编程方式工作,android,android-linearlayout,Android,Android Linearlayout,我想在我的Android程序中以编程方式为2 TextView设置参数,但我有一个问题。这是一段有趣的代码: private void setChatItemStyle(Boolean mineMsg, ChatViewHolder holder) { if(mineMsg) { holder.params.gravity = Gravity.END; holder.autore.setTextColor(Color.BLUE);

我想在我的Android程序中以编程方式为2 TextView设置参数,但我有一个问题。这是一段有趣的代码:

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 CIOSCO及其各自的文本应显示在活动的右侧,而不是在活动左侧的文本下方

这是我的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文件:


当我们没有
TextView
的布局时,很难回答,因为它应该在您的
聊天视图持有者中

关于重力,我能说的是,重力有两种类型

  • LayoutParams
    中的重力等于xml中的
    layout\u重力(文本视图的布局)
  • 视图中的重力
    等于xml中的
    重力
    (在您的案例中,此视图中的子视图布局为
    文本视图中的文本
  • 就你而言:

    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);
    }
    
  • 如果您的
    TextView
    宽度为
    WRAP\u内容
    ,则该功能将起作用
  • 如果您的
    TextView
    宽度与父项的
    MATCH\u宽度相同,则可以使用
  • 在您的情况下,有一种方法可以做到这一点:

    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\u parent


    我和kotlin一起工作,所以语法可能是错误的?抱歉,如果我遗漏了任何内容,您可以看到图片…

    您的问题中添加ChatViewHolder+xml文件的可能重复项确定,我将用代码编辑您的帖子,并将您的xml发送给我1。更改文本视图以匹配宽度为2的父对象。将重力设置为autore,消息如:holder.autore.setGravity()等…我的线性布局(垂直)需要在宽度上与父项匹配?是的,我错过了!线性布局匹配\u父对象