0

J'apprécie votre aide si quelqu'un peut me fournir une solution. J'ai deux question:Comment contrôler les vues de texte générées par programme

1- J'ai un bouton qui génère des Params et TextView chaque fois que je clique dessus. Je mets les variables à textview "textnew" et param "lptxt". Cependant, je ne peux contrôler que la dernière vue de texte générée, la police de caractères, la taille de la police, la suppression ... etc. Existe-t-il une méthode pour définir l'ID automatique et je peux le rappeler dans d'autres méthodes? J'ai essayé isSelected, isTouched, hasFocus, et d'autres, mais rien n'a fonctionné.

2- Comment redéfinir mon TextView comme il l'était après avoir défini les bordures? Disons que j'ai mis des bordures au TextView du rayon 10dp et une couleur rouge. mais lorsque vous touchez le TextView, les bordures se transforment en rayon de 1dp comme indiqué dans drawable/corners.

Merci

Voici mon code

RelativeLayout rel0 = (RelativeLayout) findViewById(R.id.rel0); 

OnClick:

textnew = new TextView(MainActivity.this); 
    lptxt = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, 
            RelativeLayout.LayoutParams.WRAP_CONTENT); 
          lptxt.addRule((RelativeLayout.CENTER_HORIZONTAL)); 
          lptxt.addRule((RelativeLayout.CENTER_VERTICAL)); 
          lptxt.addRule((RelativeLayout.CENTER_IN_PARENT)); 
          textnew.setLayoutParams(lptxt); 
          rel0.addView(textnew); 
          rel0.bringChildToFront(textnew); 
          rel0.bringToFront(); 
          textnew.setText(edittextdialog.getText().toString()); 

OnTouch:

case MotionEvent.ACTION_DOWN: { 
         textnew.setBackgroundResource(R.drawable.borders); 
         textnew.isSelected(); 

         break; 
        } 

BTW Je travaille sur l'API 11

Nous vous remercions à l'avance,

+0

vous pouvez définir Id dans textview https://developer.android.com/reference/android/view/View.html#generateViewId() – Sanny

+0

Le textview est créé par programme.Moyens Je veux que le bouton crée des textviews mais si je mets l'identifiant, ce sera pour un. Oui je peux le rappeler mais ce ne sera qu'un. – Badee

+0

Cette solution est pour API 17. Je suis sur 11. merci – Badee

Répondre

0

J'ai trouvé une solution à ce problème:

Je gonflé une vue sur ACTION_UP, où je peux changer la taille du texte, la couleur, la police et même le supprimer. Les modifications se produisent directement sur le texte sélectionné avec un problème.

Merci aux gars de contribuer.

Voici mon code:

case MotionEvent.ACTION_UP: { 

    LayoutInflater lifirst = LayoutInflater.from(MainActivity.this); 
    View lifirstpv = lifirst.inflate(R.layout.infirst, null); 
    final TextView editfirst = TextView)lifirstpv.findViewById(R.id.editfirst); 
    final TextView deletefirst = (TextView)lifirstpv.findViewById(R.id.deletefirst); 

    pop = new PopupWindow(
lifirstpv,RelativeLayout.LayoutParams.WRAP_CONTENT, 
RelativeLayout.LayoutParams.WRAP_CONTENT); 

    pop.setOutsideTouchable(true); pop.setTouchable(true); 
    deletefirst.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    rel0.removeView(teext); 
    pop.dismiss(); 
    return true; 
        } 
      }); 
0
  1. utilisation setTag sur votre TextView et utiliser findViewWithTag pour obtenir la vue dont vous avez besoin.

  2. réinitialiser tout retour sur ACTION_UP

0

Par exemple, vous générez 5 TextView

List<TextView> list = new ArrayList<TextView>(); 
for(int i=0;i<5;i++){ 
    TextView textView = generateTextView(); 
    list.add(textView); 
    rel0.addView(textView); 
} 

la méthode générer TextView

public TextView generateTextView(){ 
    TextView textnew = new TextView(MainActivity.this); 
    ... 
    return textnew; 
} 

alors vous pouvez contrôler les textviews dans la liste

le textview utilise relativelayoutparams, si vous utilisez le même lptxt layoutparams. les textviews seront la même position, vous ne pouvez voir le dernier

+0

C'est une bonne idée mais je ne veux pas utiliser une liste et je ne veux pas limiter l'utilisateur de textviews. En outre, je génère des layoutparams avec les textviews. Ainsi, chaque textview a son propre layoutparam. Je peux voir et déplacer chacun d'eux, aussi loin que cela puisse arriver. Mais je ne peux que supprimer ou dactylographier le dernier. De mon code, ai-je oublié quelque chose? – Badee

+0

@Badee pouvez-vous afficher plus de code à propos de 'delete or useface'? – tesla1984

+0

pour supprimer J'utilise rel0.removeView (textnew); – Badee