TextView以编程方式安装Android

 卟抛棄D 发布于 2023-01-12 10:51

我在以编程方式创建textView时遇到一些问题.我真的不知道如何解决它.

在此输入图像描述

问题是:

- 保证金,我不希望我的TextView相互粘连.

- 文本不像标题中那样位于drawable的中心

- 我想让Nickname用户的消息向右对齐,Nick的消息对齐到左边.

为此我有这两个功能:

private void appendSenderText(String message) {

        TextView msg = new TextView(ChatActivity.this);
        msg.setBackgroundResource(R.drawable.rectangle);
        msg.setText(message);
        msg.setPadding(10, 10, 10, 10);
        msg.setTextColor(getResources().getColor(R.color.white));
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, Gravity.LEFT);
        params.setMargins(10, 10, 10, 10);
        msg.setLayoutParams(params);
        LinearLayout chat = (LinearLayout) findViewById(R.id.chatLayout);
        chat.addView(msg);  
    }

    private void appendReceiverText(String message) {

        TextView msg = new TextView(ChatActivity.this);
        msg.setBackgroundResource(R.drawable.rectangle);
        msg.setText(message);
        msg.setPadding(10, 10, 10, 10);
        msg.setTextColor(getResources().getColor(R.color.white));
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, Gravity.RIGHT);
        params.setMargins(10, 10, 10, 10);
        msg.setLayoutParams(params);
        LinearLayout chat = (LinearLayout) findViewById(R.id.chatLayout);
        chat.addView(msg);  
    }

它似乎无法正常工作.我还检查了函数是否被正确调用.我注意到在标题的XML文件中,我指定了layout_gravity而不是gravity.

编辑:我按照你的建议使用了ListView,一切都运行正常,但我仍然有这个问题,文本没有居中,虽然我使用了msg.setGravity(gravity.CENTER); Maybe我的drawable有问题.

这是我的圆形rectanngle的xml文件.这很奇怪,当我在XML文件中创建Textview时,文本居中,当我想以编程方式创建时,情况并非如此.

在此输入图像描述

这是我的drawable的代码.



    
   

   

   

这里是我创建texView的代码.

Message message = (Message) this.getItem(position);

        ViewHolder holder; 
        if(convertView == null)
        {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.sms_row, parent, false);
            holder.message = (TextView) convertView.findViewById(R.id.message_text);
            convertView.setTag(holder);
        }
        else
            holder = (ViewHolder) convertView.getTag();

        holder.message.setText(message.getMessage());
        holder.message.setTextSize(17);
        holder.message.setGravity(Gravity.CENTER);
        LayoutParams lp = (LayoutParams) holder.message.getLayoutParams();
        if(message.isMine())
        {
            holder.message.setBackgroundResource(R.drawable.rectangle);
            lp.gravity = Gravity.LEFT;
        }
        else
        {
            holder.message.setBackgroundResource(R.drawable.rectangledest);
            lp.gravity = Gravity.RIGHT;
        }
        holder.message.setLayoutParams(lp);
        holder.message.setTextColor(Color.WHITE);   

        return convertView;
    }

joao2fast4u.. 12

我更新了您的功能,它现在可以正常工作:

private void appendSenderText(String message) {

    TextView msg = new TextView(ButtonsActivity.this);
    msg.setBackgroundResource(R.drawable.rectangle);
    msg.setText(message);
    msg.setPadding(10, 10, 10, 10);
    msg.setTextColor(getResources().getColor(R.color.white));
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    params.setMargins(5, 15, 0, 0);
    params.gravity = Gravity.LEFT;
    msg.setLayoutParams(params);
    msg.setGravity(Gravity.CENTER);
    LinearLayout chat = (LinearLayout) findViewById(R.id.chatLayout);
    chat.addView(msg);  
}

private void appendReceiverText(String message) {

    TextView msg = new TextView(ButtonsActivity.this);
    msg.setBackgroundResource(R.drawable.rectangle);
    msg.setText(message);
    msg.setPadding(10, 10, 10, 10);
    msg.setTextColor(getResources().getColor(R.color.white));
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    params.setMargins(0, 15, 5, 0);
    params.gravity = Gravity.RIGHT;
    msg.setLayoutParams(params);
    msg.setGravity(Gravity.CENTER);
    LinearLayout chat = (LinearLayout) findViewById(R.id.chatLayout);
    chat.addView(msg);  
}

您必须设置TextView重力以将文本定位在内部TextView并在父项中设置重力LinearLayout以设置TextView内部的位置LinearLayout.

请注意,我使用的是a LinearLayout而不是a FrameLayout.

1 个回答
  • 我更新了您的功能,它现在可以正常工作:

    private void appendSenderText(String message) {
    
        TextView msg = new TextView(ButtonsActivity.this);
        msg.setBackgroundResource(R.drawable.rectangle);
        msg.setText(message);
        msg.setPadding(10, 10, 10, 10);
        msg.setTextColor(getResources().getColor(R.color.white));
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        params.setMargins(5, 15, 0, 0);
        params.gravity = Gravity.LEFT;
        msg.setLayoutParams(params);
        msg.setGravity(Gravity.CENTER);
        LinearLayout chat = (LinearLayout) findViewById(R.id.chatLayout);
        chat.addView(msg);  
    }
    
    private void appendReceiverText(String message) {
    
        TextView msg = new TextView(ButtonsActivity.this);
        msg.setBackgroundResource(R.drawable.rectangle);
        msg.setText(message);
        msg.setPadding(10, 10, 10, 10);
        msg.setTextColor(getResources().getColor(R.color.white));
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        params.setMargins(0, 15, 5, 0);
        params.gravity = Gravity.RIGHT;
        msg.setLayoutParams(params);
        msg.setGravity(Gravity.CENTER);
        LinearLayout chat = (LinearLayout) findViewById(R.id.chatLayout);
        chat.addView(msg);  
    }
    

    您必须设置TextView重力以将文本定位在内部TextView并在父项中设置重力LinearLayout以设置TextView内部的位置LinearLayout.

    请注意,我使用的是a LinearLayout而不是a FrameLayout.

    2023-01-12 10:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有