Je suis un développeur Swift iOS Apprendre à faire des applications Android. Je me demandais s'il y avait un moyen équivalent pour créer de manière dynamique / programme d'objets d'interface utilisateur dans Android. Dans iOS, je peux simplement
let btn = UIButton() // Create a UI object btn.frame = CGRect(x: 0, y: 0, width: 100, height: 100) // Set the frame of the object btn.backgroundColor = UIColor.blue // Mess with the properties of the object self.view.addSubview(btn) // Add it to a UIView
3 Réponses :
Vous pouvez créer des objets d'interface utilisateur de manière dynamique. Comme: et ajoutez-le à la disposition comme: p> N'oubliez pas que si vous n'avez pas de contexte, vous ne pouvez pas Créez des objets d'interface utilisateur. P> Si vous savez comment mettre votre objet UI dans XML, vous apprendrez rapidement d'autres choses en création dynamique) p> p>
merci, comment puis-je modifier de manière dynamique le cadre comme un CGRRECT code> est Swift
Cela dépend du type de mise en page que vous utilisez. Dans Android, vous pouvez ajouter des marges pour positionner votre vue dans son parent.
Vous pouvez créer des objets à partir du code, mais ce n'est pas très conseillé. Le code final est beaucoup plus clair et interprétable s'il est représenté dans le fichier XML. Si vous souhaitez insérer une BOUTOM à partir du code:
Button actionBtn = new Button(this); // Create a UI object actionBtn.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); // Set the frame of the object actionBtn.setBackgroundColor(getResources().getColor(R.color.blue)); // Mess with the properties of the object setContentView(actionBtn); // Add it to a UIView
Salut donc je ne peux pas vraiment mettre le cadre à l'aide de pixels? comme de mon exemple à (0,0100 100 100). Donc, je dois utiliser la mise en page essentiellement pour positionner les choses?
Dans Android, vous devez concevoir pour de nombreux appareils différents. Il n'est donc pas bon d'utiliser des valeurs de pixels codées durement. Cependant, vous pouvez essayer quelque chose comme ActionBTN .getlayOutParams (). Hauteur = 180;
Oui! Vous pouvez absolument! En fait, la création de vues et de l'interface utilisateur est de nombreux avantages à Android:
myCustomView.updatelabel ("nouvelle étiquette") code> sans avoir à faire des choses comme FOISTVIEWBYID (...) CODE> LI>
- Vous pouvez encapsuler votre UI programmatique dans des classes réutilisables, comme celle indiquée ci-dessous: Li>
OL>
class MyCustomView : FrameLayout {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
context, attrs, defStyleAttr
)
init {
val button = Button(context)
val buttonParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
buttonParams.gravity = Gravity.CENTER
button.text = "Click Me!"
button.layoutParams = buttonParams
this.addView(button)
}
}
Ce n'est pas vraiment la plus grande des idées pour faire de l'interface utilisateur de manière programmatique car elle augmente de manière significative la quantité de code mais cela peut être fait et voici un exemple rapide Stackoverflow.com/questions/3204852/...
Toute raison pour laquelle vous ne voulez pas simplement utiliser des mises en page XML?
Je serais bien accepté ici. Je pense que la création de l'interface utilisateur par programmation dans votre application et sans utiliser XML a beaucoup d'avantages. Pour un, ne pas gonfler XML dans différentes mises en page réduit considérablement les performances de dessin / rendu. Deuxièmement, vous n'ayez pas XML dans votre projet, vous pouvez réduire la taille de votre APK ou de votre format d'apps. Enfin, être capable d'encapsuler la logique qui peut manipuler ces interface utilisateur programmatique rend votre code beaucoup plus propre et beaucoup plus flexible.