Yo estaba tratando de agregar spinner a mi aplicación de forma dinámica mediante el siguiente código:

    @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);
}

Esto se suma la ruleta, pero reemplaza todo lo que tengo en mi XML con los creados de forma dinámica spinner.
Quiero agregar el control de giro para el diseño (que he creado usando XML) haciendo clic en un botón, no la sustitución de la presentación. Por favor, ayudar.

EDIT: Aquí está mi archivo 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>
  • has intentado todo para que?
  • se establece el contentView a la linearlayout creó, por lo tanto la sustitución, recuperar la vista (Relativa o Lineal) el uso de findViewById y, a continuación, agregue el control de giro para que, o añadir el esquema lineal que creó a ese diseño.
InformationsquelleAutor Gantavya | 2014-01-17

4 Comentarios

  1. 4

    Esto es lo Que ha hecho

    1. Añadido un nuevo LinearLayout.
    2. Añadido un control de giro para el diseño anterior.
    3. Y establecer el contenido de la vista.

    Esto es lo que creo que va a funcionar.

    1. Que llegar a la raíz de diseño utilizando findViewById(R.id.root_layout).
    2. Ahora crear un spinner.Agregar elementos a como lo hacía correctamente anteriormente en el código.
    3. Ahora agregue el control de giro para su root_layout.

    Su Error

    Se hizo un nuevo diseño y se establece como el contenido principal y nunca se ha agregado a la root_layout.

    Depuración

    Si quieres ver lo que el diseño de la jerarquía de su diseño.Abierto ddms ver y haga clic en la jerarquía opción Visor de allí.Este hotel se encuentra cerca de la opción de cámara.Haga clic en él y llegar a la pantalla y verá su jerarquía de diseño que mostrará un linearLayout que contiene un spinner.

    Aquí un código que demostrar.

    package com.example.testproject;

    import android.app.De la actividad;
    import android.os.Paquete;
    import android.widget.ArrayAdapter;
    import android.widget.LinearLayout;
    import android.widget.RelativeLayout;
    import android.widget.Spinner;

    public class MainActivity extends Actividad {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    /**
    * This is what you have done!!!
    */
    LinearLayout layout=new LinearLayout(this);
    String[] strings={"1","2","3"};
    Spinner spinner=new Spinner(this);
    spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,strings));
    layout.addView(spinner);
    /**
    * Comment this line when you use the below mentioned solution.
    */
    setContentView(layout);
    /**
    * This is what you should have done.
    */
    RelativeLayout root_layout=(RelativeLayout)findViewById(R.id.root_layout);
    root_layout.addView(spinner);
    }

    }

    Espero que sea de ayuda para usted.

    • agrega la rueda a la parte superior de la presentación. ¿Cómo puedo agregar el número a la derecha antes de «button1» botón de mi XML?
    • utilice su contenedor de diseño como RelativeLayout y establezca las siguientes propiedades para el control de giro : android:layout_alignLeft=»@+id/your_button»
    • Me estaba preguntando acerca de la creación dinámica de spinner. Cuando agrego el código android:layout_alignLeft="@+id/button1;, me sale el error layout_alignleft cannot be resolved to a variable.
    • esperar ..enfermo publicar un código para establecer su posición.
    • No, la cosa va por encima de en el xml,pero lo están haciendo de forma dinámica, de modo que usted debe obtener el diseño de parámetros para la root_layout y establecer la regla a ella.El setRule método toma el align_left (verbo) y el segundo argumento es el ancla(a la izquierda de la que desea algo).. RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)botón.getLayoutParams(); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.LEFT_OF, R. id.id_to_be_left_of); botón.setLayoutParams(params); //hace el diseño de la actualización
  2. 1

    Podría publicar su activity_main.xml archivo que se encuentra en la res/layout/ carpeta de tu proyecto.

    En cualquier caso, se debe añadir su control de giro para su main_layout, no a algunos de los nuevos linearlayout no está conectado a nada.

    Y a continuación es lo que la solución debe verse como
    (aunque, esto sólo funcionará dependiendo de lo que realmente está escrito en su activity_main.xml archivo):

    @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); 
    //The line below assumes that the layout called main_layout 
    //found in the res/layout/activity_main.xml is a LinearLayout
    LinearLayout mainLayout = (LinearLayout)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);
    mainLayout.addView(spinner);
    }

    Después de corregir este error, te sugiero que estudiar un poco de Java y hacer algo de Java ejercicios durante al menos veinte minutos al día durante tres o cuatro semanas. Una vez que sabes un poco más de Java, usted será capaz de corregir errores como estos muy fácilmente.

    • funciona, pero la nueva spinner se agrega a la parte superior de la presentación. ¿Cómo puedo agregar a la parte inferior de la presentación. Voy a editar mi post para incluir mi archivo XML.
  3. 1

    Error: ha creado un nuevo esquema lineal(que la dosis no contiene ningún punto de vista), y añadió spinner a continuación, repaced su activity_main diseño con este diseño que sólo contiene spinner.

    Manera fácil es hacer Spinner invisible inicialmente y hacerla visible cuando el botón es pulsado

    Para declarar ruleta ruleta visibilidad=»ido» en XML

                        <Spinner
    android:id="@+id/my_spin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    />

    En Oncreate

     spinner = (Spinner) findViewById(R.id.my_spin);

    Ahora hacer spinner visible en el Clic de botón

    timer_spin.setVisibility(View.VISIBLE); 

    Nota:

    IDO:Este punto de vista es invisible, y no toma nada de espacio para propósitos de diseño.

    INVISIBLE:Este punto de vista es invisible, pero todavía tiene espacio para propósitos de diseño

    VISIBLE:Este punto de vista es visible.

  4. 0

    por favor, eche un vistazo a la suya código

    setContentView(R.layout.activity_main);

    pero más tarde

    setContentView(linearlayout);

    manejar todas estas cosas cuidadosamente

    por favor, eche un seperate esquema lineal en la tuya principal xml de diseño y uso de la siguiente

     final LinearLayout lm = (LinearLayout) findViewById(R.id.linearMain);

    lugar de
    LinearLayout linearlayout = new LinearLayout(this);

Dejar respuesta

Please enter your comment!
Please enter your name here