TextView par programmation Android
J'ai quelques problèmes de la création d'un textView par programmation. Je ne sais vraiment pas comment le résoudre.
Les problèmes sont :
-La marge, je ne veux pas que mon TextView collé les uns aux autres.
-Le texte n'est pas centré dans le drawable comme dans le titre
-Je veux que les messages de Pseudo de l'utilisateur aligné à droite et les messages de Nick aligné à gauche.
Pour cela, j'ai ces deux fonctions :
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);
}
Il semble qu'il ne fonctionne pas. J'ai également vérifié que les fonctions sont correctement appelé.
J'ai remarqué que dans mon fichier XML pour le titre, j'ai précisé que layout_gravity et pas de gravité.
EDIT : j'ai utilisé ListView comme vous l'avez suggéré, tout fonctionne bien mais j'ai toujours ce problème avec le texte non centrée, bien que j'ai utilisé msg.setGravity(gravity.CENTER);
Peut-être que mon drawable a un problème.
Voici le fichier xml pour mon arrondie rectanngle. C'est bizarre, quand j'ai créer mon Textview dans le fichier XML, le texte est centré, et lorsque je veux créer par programmation, il n'est pas le cas.
Voici le code de mon drawable.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="@color/drk_button"
android:endColor="@color/lgt_button"
android:angle="90">
</gradient>
<corners android:radius="7dip" />
<stroke
android:width="1px"
android:color="@color/drk_button" />
</shape>
Et voici le code où j'ai créer le 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;
}
Si vous développez une application de chat, de mieux utiliser les
ListView
et de passer par quelques exemples d'application de chat codes.github.com/AlexBarinov/UIBubbleTableView
OriginalL'auteur nytochin | 2014-06-02
Vous devez vous connecter pour publier un commentaire.
J'ai mis à jour vos fonctions et il fonctionne comme vous le souhaitez maintenant:
Vous devez définir
TextView
gravité pour positionner le texte à l'intérieur de laTextView
et de l'ensemble de la gravité dans le parentLinearLayout
pour définir la position de laTextView
à l'intérieur de laLinearLayout
.Avis que je suis en utilisant un
LinearLayout
au lieu d'unFrameLayout
.OriginalL'auteur joao2fast4u
Utilisation personnalisée listviews pour remplir les lignes de chat.
Pour rendre le texte dans le chat au centre d'ajouter cette ligne.
Je crois que votre image mise en page apporte la textviews à proximité les uns des autres.
Je vous recommande d'utiliser ListView avec adaptateur personnalisé pour remplir les lignes de chat. Il est facile d'ajouter les lignes de discussion et de mise à jour de la vue dans les ListViews. suivez ce lien . il vous donnera une idée de base.
OriginalL'auteur AndEngine