title: TextView programmatically Android
body: <p>I have some problems creating a textView programmatically. I don't really know how to solve it.</p>
  
  <p><img src="https://i.stack.imgur.com/KBVV1.png" alt="enter image description here"></p>
  
  <p>The problems are :</p>
  
  <p>-The margin, I don't want my TextView stuck to each other.</p>
  
  <p>-The text is not centered in the drawable like in the title</p>
  
  <p>-I want the messages of Nickname user aligned to the right and the messages of Nick aligned to the left.</p>
  
  <p>For this I have these two functions :</p>
  
  <pre><code>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);  
      }
  </code></pre>
  
  <p>It seems that it is not working. I've also checked that the functions are correctly called.
  I noticed that in my XML file for the title, I specified layout_gravity and not gravity. </p>
  
  <p>EDIT : I used ListView as you suggested, everything is working fine but I still have this problem with the text not centered, although I used <code>msg.setGravity(gravity.CENTER);</code>
  Maybe my drawable has a problem.</p>
  
  <p>Here is the xml file for my rounded rectanngle. That's weird, when I create my Textview in XML file, the text is centered, and when I want to create programmatically, it's not the case.</p>
  
  <p><img src="https://i.stack.imgur.com/O8fft.png" alt="enter image description here"></p>
  
  <p>Here is the code of my drawable.</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"&gt;
      &lt;gradient
       android:startColor="@color/drk_button"
       android:endColor="@color/lgt_button"
       android:angle="90"&gt;
     &lt;/gradient&gt;
  
     &lt;corners android:radius="7dip" /&gt;
  
     &lt;stroke
       android:width="1px"
       android:color="@color/drk_button" /&gt;
  &lt;/shape&gt;
  </code></pre>
  
  <p>And here the code where I create the texView.</p>
  
  <pre><code>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;
      }
  </code></pre>