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) } }
4 Réponses :
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); }
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
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>
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>
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.
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
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?
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