Ajouter spinner avec un clic de bouton dynamiquement dans Android
J'ai essayé d'ajouter un compteur de mon application dynamiquement en utilisant le code suivant:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startTime = (EditText)findViewById(R.id.EditTextST);
startDate = (EditText)findViewById(R.id.editTextSD);
LinearLayout linearlayout = new LinearLayout(this);
//RelativeLayout linearlayout = (RelativeLayout)findViewById(R.id.main_layout);
ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add("one");
spinnerArray.add("two");
spinnerArray.add("three");
spinnerArray.add("four");
spinnerArray.add("five");
Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);
linearlayout.addView(spinner);
setContentView(linearlayout);
}
Cela ajoute de la toupie mais remplace tout ce que j'ai dans mon code XML créé dynamiquement spinner.
Je veux ajouter la touche de navigation pour la mise en page (que j'ai créé à l'aide de XML) en cliquant sur un bouton, ne remplace pas la mise en page. S'il vous plaît aider.
EDIT: Voici mon fichier XML
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="900dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/select_week"
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:text="@string/sun" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox1"
android:layout_alignBottom="@+id/checkBox1"
android:layout_toRightOf="@+id/checkBox1"
android:text="@string/mon" />
<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/checkBox2"
android:layout_toRightOf="@+id/checkBox2"
android:text="@string/tue" />
<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox3"
android:layout_alignBottom="@+id/checkBox3"
android:layout_toRightOf="@+id/checkBox3"
android:text="@string/wed" />
<CheckBox
android:id="@+id/checkBox5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/checkBox1"
android:layout_toLeftOf="@+id/checkBox2"
android:text="@string/thu" />
<CheckBox
android:id="@+id/checkBox6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/checkBox2"
android:layout_below="@+id/checkBox2"
android:text="@string/fri" />
<CheckBox
android:id="@+id/checkBox7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/checkBox2"
android:layout_toRightOf="@+id/checkBox2"
android:text="@string/sat" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/checkBox5"
android:layout_marginTop="18dp"
android:text="@string/select_week_number"
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox
android:id="@+id/CheckBox01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox02"
android:layout_alignBottom="@+id/checkBox02"
android:layout_alignLeft="@+id/checkBox5"
android:text="@string/one" />
<CheckBox
android:id="@+id/CheckBox03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox02"
android:layout_alignBottom="@+id/checkBox02"
android:layout_toRightOf="@+id/checkBox6"
android:text="@string/three" />
<CheckBox
android:id="@+id/checkBox02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_toRightOf="@+id/checkBox5"
android:text="@string/two" />
<CheckBox
android:id="@+id/CheckBox04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/CheckBox03"
android:layout_alignBottom="@+id/CheckBox03"
android:layout_toRightOf="@+id/textView2"
android:text="@string/four" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/CheckBox01"
android:layout_marginTop="16dp"
android:text="@string/select_start_date"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editTextSD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/CheckBox01"
android:layout_below="@+id/TextView01"
android:layout_toLeftOf="@+id/CheckBox04"
android:ems="10"
android:inputType="text|date"
android:onClick="showDatePickerDialog" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/EditTextST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editTextSD"
android:layout_alignBottom="@+id/editTextSD"
android:layout_alignLeft="@+id/CheckBox04"
android:ems="10"
android:inputType="time"
android:onClick="showTimePickerDialog" />
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editTextSD"
android:layout_below="@+id/editTextSD"
android:layout_marginTop="17dp"
android:text="@string/select_end_date"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/TextView02"
android:layout_alignRight="@+id/editTextSD"
android:layout_below="@+id/TextView02"
android:ems="10"
android:inputType="text|date"
android:onClick="showDatePickerDialog" />
<EditText
android:id="@+id/EditText02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/EditText01"
android:layout_alignBottom="@+id/EditText01"
android:layout_alignLeft="@+id/EditTextST"
android:ems="10"
android:inputType="time"
android:onClick="showTimePickerDialog" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/EditText01"
android:layout_below="@+id/EditText01"
android:layout_marginTop="17dp"
android:text="@string/reminder"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView3"
android:entries="@array/reminder_times"
android:paddingLeft="-10dp"
android:gravity="left"
tools:listitem="@android:layout/activity_list_item" />
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/spinner1"
android:layout_marginTop="119dp"
android:text="@string/add_reminder" />
</RelativeLayout>
</ScrollView>
avez-vous essayé quoi que ce soit?
vous êtes à la définition de la contentView à la linearlayout vous avez créé, d'où le remplacement, chercher de la vue (Relative ou Linéaire) à l'aide de findViewById puis ajouter la touche de navigation pour qui, ou ajouter le linéaire de la mise en page que vous avez créé à cette mise en page.
vous êtes à la définition de la contentView à la linearlayout vous avez créé, d'où le remplacement, chercher de la vue (Relative ou Linéaire) à l'aide de findViewById puis ajouter la touche de navigation pour qui, ou ajouter le linéaire de la mise en page que vous avez créé à cette mise en page.
OriginalL'auteur Gantavya | 2014-01-17
Vous devez vous connecter pour publier un commentaire.
C'est ce que Vous avez fait
C'est ce que je pense de travail.
findViewById(R.id.root_layout)
.root_layout
.Votre Erreur
Vous faites une nouvelle mise en page et de le définir comme le contenu principal, et vous n'avez jamais ajouté à la root_layout.
De débogage
Si vous voulez voir la mise en page de la hiérarchie de votre mise en page.Ouvrir ddms vue et cliquez sur la hiérarchie de la Visionneuse option.Il est situé près de l'option de caméra.Cliquez et obtenez l'écran et vous verrez que votre mise en page de la hiérarchie qui permet d'afficher un linearLayout contenant un spinner.
Voici un code pour le démontrer.
import android.app.De l'activité;
import android.os.Faisceau;
import android.widget de.ArrayAdapter;
import android.widget de.LinearLayout;
import android.widget de.RelativeLayout;
import android.widget de.Spinner;
public class MainActivity extends Activité {
}
Espère que cela vous aide.
utilisez votre conteneur de mise en page comme RelativeLayout et définissez les propriétés suivantes pour le compteur : android:layout_alignLeft="@+id/your_button"
Je posais des questions à propos de la créé dynamiquement spinner. Lorsque j'ajoute le code
android:layout_alignLeft="@+id/button1;
, j'obtiens l'erreurlayout_alignleft cannot be resolved to a variable
.attendre ..ill après un code pour le réglage de sa position.
Pas de ci-dessus va dans le xml,mais vous le faites de manière dynamique, de sorte que vous devriez obtenir la mise en page paramètres de la root_layout et la règle.Le setRule est la méthode la align_left (verbe) et le deuxième argument est d'ancrage(à gauche de laquelle vous voulez quelque chose).. RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)bouton.getLayoutParams(); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.LEFT_OF, R. id.id_to_be_left_of); bouton.setLayoutParams(params); //provoque la mise à jour
OriginalL'auteur cafebabe1991
Pourriez-vous poster votre
activity_main.xml
fichier situé dans leres/layout/
dossier de votre projet.Dans tous les cas, vous devriez être en ajoutant votre touche de navigation pour votre main_layout, non pas à une nouvelle linearlayout n'est connectée à rien.
Et ci-dessous est ce que la solution devrait ressembler à
(bien que, cela ne fonctionnera selon ce qui est écrit dans votre
activity_main.xml
fichier):Après vous corriger cette erreur, je vous suggère étude un peu de Java et de faire un peu de Java exercices pendant au moins vingt minutes par jour pendant trois ou quatre semaines. Une fois que vous en savez un peu plus de Java, vous serez en mesure de corriger les erreurs comme ces très facilement.
OriginalL'auteur Stephan Branczyk
Erreur: Vous avez créé de nouveaux linéaires de mise en page(qui dose contiennent pas de vue) et ajouté spinner alors repaced votre activity_main mise en page avec cette mise en page qui ne contient que les spinner.
Moyen facile est de faire Spinner invisible d'abord et de le rendre visible lorsque le bouton est cliqué
Déclare spinner spinner visibilité="disparu" en XML
Dans Oncreate
Maintenant faire spinner visible sur le Clic du bouton
Note:
ALLÉ:Ce point de vue est invisible, et il ne prend pas tout l'espace de la disposition.
INVISIBLE:Ce point de vue est invisible, mais il faut encore de l'espace pour faciliter la disposition
VISIBLE:Ce mode d'affichage est visible.
OriginalL'auteur Shakeeb Ayaz
jetez un oeil à la vôtre code
mais plus tard
gérer toutes ces choses avec soin
veuillez séparer linéaire de la mise en page à la vôtre xml principal de mise en page et l'utiliser à la suite de
au lieu de
LinearLayout linearlayout = new LinearLayout(this);
OriginalL'auteur Jitesh Upadhyay