1
votes

Changer l'image source pour tous les arrière-plans lorsque vous appuyez sur ImageView

Je voudrais changer l'arrière-plan de tous les calques lorsque je clique sur une ImageView , par exemple cette ImageView a l'aperçu de la couleur jaune mais lorsque je clique dessus, Je voudrais changer l'arrière-plan en une image avec le nom de fondoamarillo.jpg , mon nom de couche est colores et mon kt est Colores XXX

Voici le .kt:

class Colores : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.colores)
    }

    fun onAtrasConfig(view: View){
        try {
            val intent: Intent = Intent(this, Configuracion::class.java)
            startActivity(intent)
        }catch (e: Exception){
            e.printStackTrace()
        }
    }

    fun changeAllBackground(mainLayout:View) {
        val mainln: ConstraintLayout = findViewById(R.id.mainln)
        mainln.background = getDrawable(R.drawable.fondoamarillo)
    }
}

 Ceci est mon xml et je voudrais cliquer l'imageView ou Button

 Cela devrait être le nouvel arrière-plan lorsque je clique sur le nouveau imageView ou Button


2 commentaires

Est-ce que cela répond à votre question? Changer l'image source pour la vue image lorsque vous appuyez sur


J'ai changé de sujet


4 Réponses :


0
votes

vous pouvez définir l'image par programmation en cliquant sur cette imageView

imageView41.setOnClickListener {

            imageView41.setImageResource(R.drawable.fondoamarillo)

            //setBackgroundResource change the background of the imageView            
            imageView41.setBackgroundResource(R.drawable.fondoamarillo);

    }


11 commentaires

Où dois-je l'ajouter? dans le .kt?


Oui, si vous utilisez java, vous devez convertir le code en java


Ouais j'utilise kotlin


Ma réponse vous est-elle utile? @JorgeAlberto


Que souhaitez-vous modifier l'arrière-plan ou les ressources de l'imageView? @JorgeAlberto


Je souhaite modifier les ressources d'arrière-plan lorsque je clique sur imageView


Voulez-vous remplacer amarillo tirable par fondoamarillo? @JorgeAlberto


Non, je veux remplacer l'arrière-plan réel fondoazul.jpg par un nouveau fond fondoamarillo.jpg, l'amarillo dessinable est l'image de l'imageView mais je veux cliquer sur cette imageView "c'est l'aperçu" pour changer l'arrière-plan en fondoamarillo.jpg


Si je l'ajoute sur le .kt, il indique Référence non résolue: imageView41


fun onCambio (view: View) {imageView41.setOnClickListener {imageView41.setImageResource (R.drawable.fondoamarillo) // setBackgroundResource change l'arrière-plan de l'imageView imageView41.setBackgroundResource (R.drawable.fondoamarillo); }}


Veuillez mettre à jour votre question avec le dernier code @JorgeAlberto



0
votes

Je ne suis pas tout à fait sûr de ce que vous voulez réaliser. Si vous voulez simplement changer l'arrière-plan de votre imageview41, vous pouvez essayer

fun onCambio(view: View) {
    view.setImageResource(R.drawable.fondoamarillo)

    //setBackgroundResource change the background of the imageView
    view.setBackgroundResource(R.drawable.fondoamarillo);
}}

puisque vous faites référence à onCambio dans le xml, je pense que vous n'avez pas besoin de définir un onClickListener dans kotlin. Mais sachez que cela ne changera que l'arrière-plan de cette vue et non "tous les calques" comme vous le dites.

Si vous voulez changer l'arrière-plan de tout l'écran, vous devriez peut-être changer le background du groupe de vues contenant votre imageview au lieu de changer l'arrière-plan de l'imageview elle-même.

si vous voulez que ce changement persiste à travers les activités, vous devez stocker une référence à la ressource d'arrière-plan souhaitée dans la mémoire persistante. vous pouvez y parvenir en stockant l'ID de ressource de votre arrière-plan dessinable dans les préférences partagées.

(si vous êtes connecté en el chat pq me temo q no se esta entendiendo bien lo q querés alcanzar) / p>


0 commentaires

1
votes

Ok, alors vous pouvez utiliser cette fonction que je viens de créer. il a toujours besoin de la mise en page de votre support de vues. par exemple, si vous voulez capturer tous les calques, vous pouvez envoyer la mise en page principale de la vôtre et peu importe le type de votre mise en page principale, tout est bon et changera l'arrière-plan en l'image que vous m'avez indiquée.

Version Java:

private fun changeAllBackground(mainLayout:ViewGroup) {
  for (i in 0 until mainLayout.getChildCount())
  {
    val v = mainLayout.getChildAt(i)
    //this is where you put what you want to do with the layer
    v.setBackgroundResource(R.drawable.fondoamarillo)
    if (v is ViewGroup){
        changeAllBackground((v as ViewGroup))
    }
  }
}

Version Kotlin:

    private void changeAllBackground(ViewGroup mainLayout){
        for(int i=0; i<mainLayout.getChildCount();i++){
            View v = mainLayout.getChildAt(i);
            //this is where you put what you want to do with the layer
            v.setBackgroundResource(R.drawable.fondoamarillo);
            if(v instanceof ViewGroup)
                changeAllBackground(((ViewGroup)v));
        }
    }

p>


9 commentaires

Que prenez-vous en tant que groupe de vues?


importez-le simplement. importez simplement le ViewGroup est une classe. par exemple, LinearLayout est l'enfant de ViewGroup. si vous utilisez android studio, cliquez simplement sur Alt + Entrée dans le mot ViewGroup et l'importera.


c'est certainement votre réponse, car vous pouvez voir que StackOverflow lui-même a obtenu le ViewGroup sous forme de nom défini, ce qui signifie qu'il n'est pas résolu, il suffit de l'importer.


voici le code d'importation si vous ne pouvez pas le faire: import android.view.ViewGroup; et c'est pour java, convertissez-le simplement en Kotlin. si vous ne savez pas comment, dites-moi que je vais le changer pour vous, le répertoire des deux est le même.


Je l'ai fait avec l'importation que vous m'avez dit dans le .kt et j'ai essayé de l'exécuter mais cela ne fonctionne pas


qu'as-tu passé à ma fonction exactement? avez-vous fait comme je l'ai dit? avez-vous transmis la mise en page principale de toutes les vues de votre fichier XML à la fonction?


Laissez-nous continuer cette discussion dans le chat .


J'ai déjà publié ce que vous m'avez dit dans le chat, mais cela a changé l'arrière-plan de cette mise en page, comment puis-je conserver cet arrière-plan sur toutes les mises en page de l'application?


ok alors vous devez utiliser la balise pour chaque bouton et la méthode que je vous ai envoyée dans le chat, vous pouvez faire un if pour la balise de l'entrée View et décider de la couleur à utiliser.



0
votes

Je pense que cela fonctionnera

fun onCambio(view: View){

colores.background = getDrawable(R.drawable.fondoamarillo)

}}

sinon

 imageView41.setOnClickListener {
            colores.background = getDrawable(R.drawable.fondoamarillo)
        }

Votre question n'est toujours pas claire pour moi.

pour ce que je comprends, vous avez imageView (@ + id / imageView41) code > qui montrent la couleur jaune après avoir cliqué sur imageView (@ + id / imageView41) , cela changerait le calque ou la mise en page ? (@ + id / colores) être fondoamarillo.jpg vous mentionnez également que votre kt s'appelle "Colores"

quelque chose qui n'est toujours pas clair pour moi est

Que fait votre Colores.kt?

si vous avez vraiment besoin d'aide, je pense que vous devez montrer votre activité principale ou l'activité qui souhaite cliquer sur cette image ainsi que le fichier xml de mise en page et le Colores.kt aussi


1 commentaires

quel est l'identifiant de votre bouton sur lequel vous souhaitez cliquer et modifier l'arrière-plan? Je pensais que c'était Android: id = "@ + id / imageView41" non?