J'ai une mise en page xml android, main.xml. Je voudrais ajouter des contrôles à cette disposition au moment de l'exécution (je voudrais ajouter une série de dispositions linéaires supplémentaires contenant des contrôles de boutons). Puis-je faire cela et si oui, comment? P>
merci p>
7 Réponses :
Vous pouvez ajouter des contrôles par programmation par programme si vous le souhaitez dans votre code, voire un autre XML avec une vue et une inflation. P>
Ici, vous pouvez lire les bases: http://developer.android .com / guide / sujets / ui / déclarant-layout.html p>
J'ai lu le document mais il ne mentionne pas comment ajouter de nouveaux contrôles (créés au moment de l'exécution) dans un fichier de mise en page XML existant.
Je vois l'erreur de faire ici
LinearLayout lnr = (LinearLayout) findViewById(R.id.LinearLayout01); Button b1 = new Button(this); b1.setText("Btn"); lnr.addView(b1);
Oui, mais le bouton n'est pas défini dans le XML. Je veux faire ce qui suit: bouton B = nouveau bouton (ceci); Linearlayout Mainlayout = (linearlayout) Findview (r.layout.main); Mainlayout.addview (b), j'essaie ceci mais j'ai une erreur. Est-ce la façon de le faire?
Quelle est l'erreur? Avez-vous essayé addview (b, nouveaux layoutparams (layoutparams.wrap_content, layoutparams.wrap_content))?
Vous pouvez le faire assez facile en définissant un identifiant sur la mise en page sur laquelle vous souhaitez ajouter des vues à. Dites ton principal.xml ressemble à ceci: permet de supposer que vous souhaitez ajouter vos vues supplémentaires au linearlayout code> avec ID
ID / conteneur code>. Dans votre méthode
Oncreate code>, vous pouvez récupérer cet objet pour une utilisation ultérieure: P>
LinearLayout theButtons = getButtons()
mContainer.addView(theButtons);
OK, je l'ai eu pour travailler.
Les étapes sont les suivantes:
Gonflez d'abord la mise en page XML, c'est-à-dire P> puis instanciez l'objet du conteneur à partir de la disposition XML dans une classe de groupe de vue, c'est-à-dire P> container.addView(buttonsLayout);
this.setContentView(view);
Essayez simplement ceci:
LinearLayout llinner = new LinearLayout(this); Button btn2 = new Button(this); btn2.setText=("Button 2"); mainLinearLayout .addView(btn2); llinner.addView(btn2 ); mainLinearLayout .addView(llinner);
Essayez ceci: p>
xxx pré> Cela pourrait vous aider p> blockQuote> blockQuote>
Voici ce que j'ai fait pour afficher un ensemble de boutons d'exécution sur la disposition de la table.
MainAlacit.java P> Activity_main.xml P> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:id="@+id/myview"
android:layout_width="404dp"
android:layout_height="691dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TableLayout
android:id="@+id/mylayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableRow android:id="@+id/myrow"></TableRow>
</TableLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>