0
votes

Comment définir la couleur de fond de TextView créée de manière dynamique?

Je crée dynamique TextView en Android. La vue est créée mais lorsque je clique sur TextView, je souhaite définir la couleur d'arrière-plan de cette vue personnelle en Android. J'ai essayé mais il définit la couleur à la dernière TextView non sélectionnée TextView.

Voici mon code P>

public class Demo extends AppCompatActivity implements View.OnClickListener {
    private LinearLayout llOptions;
    private TextView textView, tvOptionFirstQue;
    private ArrayList<String> arrayList = new ArrayList<>();
    private static final int MY_BUTTON = 9000;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_quiz_demo);
        llOptions = findViewById(R.id.llOptions);
        tvOptionFirstQue = findViewById(R.id.tvOptionFirstQue);

        for (int i = 0; i < 4; i++) {
            textView = new TextView(Demo
                    .this);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

            float left = getResources().getDimension(R.dimen.common_twentyfive);
            float top = getResources().getDimension(R.dimen.common_five);
            float toppadding = getResources().getDimension(R.dimen.common_twelve);
            float right = getResources().getDimension(R.dimen.common_twentyfive);
            params.setMargins((int) left, (int) top, (int) right, 0);
            textView.setPadding(0, (int) toppadding, 0, (int) toppadding);
            textView.setTextSize(14);
            textView.setBackgroundResource(R.drawable.button_background_light_gray);
            textView.setGravity(Gravity.CENTER);
            textView.setTextColor(Color.BLACK);
            textView.setId(i);
            textView.setLayoutParams(params);
            textView.setText("test" + i);
            textView.setOnClickListener(this);
            arrayList.add(textView.getText().toString());
            this.llOptions.addView(textView);
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case 0:
                View child = llOptions.getChildAt(v.getId());
                TextView textView1 = (TextView) child;
                onFirstOptionClisk(textView1);


        }
    }

    private void onFirstOptionClisk(TextView textView) {
        textView.setBackgroundResource(R.drawable.rounded_lightblue_answer_backgroun);
        textView.setTextColor(getResources().getColor(R.color.white));
    }


1 commentaires

Je ne pense pas que OnfirstOptionClisk () est même appelé depuis même si vous définissez l'ID sur 0, je ne pense pas que cela fonctionne. Vérifiez si l'horloge est possible d'abord


3 Réponses :


0
votes

Essayez ceci - xxx

et retirer - xxx


0 commentaires

0
votes

La raison de votre problème est que vous créez une variable de classe TextView comme textview et à chaque fois dans votre recherche uniquement, ceci est mis à jour avec une nouvelle référence et en conséquence uniquement le dernier TextView persist. Il s'agit d'un type de problème de connexion de la connexion en logique.

La solution est que vous créez un nouvel objet de votre TextView dans la boucle pour la boucle pour une référence d'objet de manière différente sera ajoutée aux lloptions linéarlayout. La seule chose que vous devez faire est que la variable de la classe Supprimer pour TextView et Créez l'objet à chaque fois pour boucle: xxx

espérons que cela résoudra votre problème. Laissez-moi savoir votre expérience.


1 commentaires

C'est une réponse appropriée et il devrait être accepté, je pense.



0
votes

Utilisez xxx

à la place xxx

fonctionnera


0 commentaires