1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Spinner mit Zahlen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von joschika77, 09.06.2009.

  1. joschika77, 09.06.2009 #1
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hallo, gibt es eine UI-Komponente die ähnlich wie ein DatePicker oder Timepicker aussieht nur mit einer beliebigen Zahl drin und dann ein Plus oder Minus zum rauf und runter drücken? Also einen Spinner meine ich. Hier bei Android is Spinner ja ne ComboBox. :confused:
     
  2. viden, 11.06.2009 #2
    viden

    viden Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    1
    Registriert seit:
    11.06.2009
    Man kann die Grundkomponente (NumberPicker) aus der der DatePicker besteht aus den Android Quellen extrahieren und selbst benutzen.. (Sind internal, können also nicht ohne weiteres einfach benutzt werden) Is ne ganz nette Sache, benutze ich auch.
    Es gibt ferige Projekte in denen du nur noch die Sourcen ziehen musst. (z.B. NumberPicker für Android Mobile Solutions Blog)

    Greets
     
  3. joschika77, 12.06.2009 #3
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Thx a lot...das sieht schon mal gut aus. Hab das auch soweit integriet in meiner Anwendung. Weiß nur nicht wie ich das Teil aufrufen kann, z.B. beim Buttonklick. Habe folgendes versucht:

    Code:
            myButton = (Button)findViewById(R.id.SwitchBtn);
            myButton.setOnClickListener(new OnClickListener()
            {
                public void onClick(View v) 
                { 
                    NumberPicker test = new NumberPicker(main.this);
                }
            });
    
    Da bekommt er eine Exception. :confused:
     
  4. viden, 12.06.2009 #4
    viden

    viden Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    1
    Registriert seit:
    11.06.2009
    in XML habe ich ihn einfach so integriert:

    Code:
    <TableRow>
            <ch.android.ebd.NumberPicker 
                android:id="@+id/Multistate"
                android:gravity="center"
                />                    
        </TableRow>
    das funktioniert super


    das Ganze ist bei mir in einem Dialog drinne...

    Dafür machst du in Layouts einfach eine neue XML file, zB NumberpickerDialog.xml

    dann machst du dir ein deiner Activity einen Dialog und weist ihm deine numberpicker_dialog.xml als Layout zu.

    Code:
    Dialog numPickDialog = new Dialog(this);
    numPickDialog.setContentView(R.layout.numberpicker_dialog);
    numPickDialog.setTitle("My Numberpicker Dialog");
    
    Button dialogBtn = (Button) findViewById(R.id.DialogButton);
    dialogBtn.setOnClickListener(new DialogButtonOpenListener(numPickDialog));
    
    protected class DialogButtonOpenListener implements OnClickListener {
    
            Dialog dialog;
    
            public DialogButtonOpenListener(Dialog dialog) {
                this.dialog = dialog;
            }
    
            public void onClick(View v) {
                dialog.show();
            }
        }
    
    
    Dann legst du wie du es gemacht hast einen Listener auf deinen Butten mit dem du den Numberpicker anzeigen willst und machst dialog.show() in der methode.
    Damit wird der Dialog mit dem Numberpicker angezeigt.. am besten du platzierst noch einen "ok" Butten unter dem Numberpicker, der den Dialog dann wider schliesst...

    Greets
     
    Zuletzt bearbeitet: 12.06.2009
  5. joschika77, 12.06.2009 #5
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hmmm muß doch aus dem laufenden Programm auch gehen oder? Also ich habe mir vorgestellt wenn ich den Button drücke popt halt der NumberPicker auf, mach meine Einstellungen und schliesse den wieder.
     
  6. joschika77, 12.06.2009 #6
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Ok hast noch was zugeschrieben.
     
  7. joschika77, 12.06.2009 #7
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Ich krieg das nicht hin. Wie muß denn die Dialog xml aussehen? in den sourcen lagen zwei xmls bei. number_picker.xml und number_picker_edit.xml

    number_picker.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
        <!--
            ** ** Copyright 2008, The Android Open Source Project ** ** Licensed
            under the Apache License, Version 2.0 (the "License"); ** you may not
            use this file except in compliance with the License. ** You may obtain
            a copy of the License at ** **
            http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by
            applicable law or agreed to in writing, software ** distributed under
            the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES
            OR CONDITIONS OF ANY KIND, either express or implied. ** See the
            License for the specific language governing permissions and **
            limitations under the License. */
        -->
    
    <merge xmlns:android="http://schemas.android.com/apk/res/android">
    
        <eu.kroczek.NumberPickerButton android:id="@+id/increment"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/timepicker_up_normal"
            />
        <EditText android:id="@+id/timepicker_input"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:gravity="center" 
            android:singleLine="true"
            style="?android:attr/textAppearanceLargeInverse" 
            android:textSize="30sp"
            android:background="@drawable/timepicker_input_normal" />
    
        <eu.kroczek.NumberPickerButton
            android:id="@+id/decrement" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:background="@drawable/timepicker_down_normal" />
    
    </merge>
    

    number_picker_edit.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <!--
    **
    ** Copyright 2008, The Android Open Source Project
    **
    ** Licensed under the Apache License, Version 2.0 (the "License");
    ** you may not use this file except in compliance with the License.
    ** You may obtain a copy of the License at
    **
    **     http://www.apache.org/licenses/LICENSE-2.0
    **
    ** Unless required by applicable law or agreed to in writing, software
    ** distributed under the License is distributed on an "AS IS" BASIS,
    ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    ** See the License for the specific language governing permissions and
    ** limitations under the License.
    */
    -->
    
    <EditText xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:singleLine="true"
        style="?android:attr/textAppearanceLargeInverse"
        android:textSize="30sp"
        android:background="@drawable/timepicker_input_normal"
        />
    
     
  8. joschika77, 12.06.2009 #8
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Das
    Code:
    numPickDialog.setContentView(R.layout.number_picker);
    schmiert ab. Warum? :confused:
     
  9. viden, 12.06.2009 #9
    viden

    viden Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    1
    Registriert seit:
    11.06.2009
    Also....

    Du machst folgendes:

    1. Kopiere NumberPicker.java & NumberPickerButton.java in dein Main package wo alle deine Java Dateien liegen.

    2. Kopiere alle timpepicker_* Dateien (14 PNGs & 3xmls) in deinen res/drawable/ ordner

    3. Kopiere number_picker.xml & number_picker_edit.xml in deinen res/layout/ ordner

    4. lege eine neue xml datei in res/layout/ an und füge dort z.B. da hier ein
    Code:
     <?xml version="1.0" encoding="utf-8"?>
    <TableLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:stretchColumns="*">
          <TableRow>
            <[b]dein.pfad[/b].NumberPicker 
                android:id="@+id/NumberPicker"
                android:gravity="center"
                />                    
        </TableRow>
        <TableRow>
            <Button 
            android:id="@+id/DialogBtn" 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:text="ok" 
            android:gravity="center_horizontal|center_vertical"
            />
        </TableRow>
    </TableLayout>
    
    5. Den Listener usw. machst du wie vorher beschrieben

    Greets

    David
     
  10. joschika77, 12.06.2009 #10
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Also Danke erstmal für deine Hilfsbereitschaft, aber wie is das gemeint mit "dein.pfad"? Ich weiß nicht was ich da angeben soll. Meine main.java liegt in package com.programmname & die anderen beiden auch. MfG
     
  11. joschika77, 12.06.2009 #11
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    So hab jetzt! Schwere Geburt. :D
     
  12. joschika77, 12.06.2009 #12
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Wie kann ich in dem Spinner z.B ein Startwert setzen? Die +/- sind auch nicht focusable. Ist das Ding überhaupt benutzbar?
     
  13. viden, 12.06.2009 #13
    viden

    viden Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    1
    Registriert seit:
    11.06.2009
    Code:
    NumberPicker numberPicker = (NumberPicker) multistateDialog.findViewById(R.id.Multistate);
            numberPicker.setRange(0, 3, new String []{"off", "slow", "med", "fast"});
     
  14. joschika77, 22.06.2009 #14
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hab noch zusätzlich einen Button eingebaut in dem NumberPickerDialog der das Eingestellte übernimmt oder so. Ich komme leider nicht an diesen Button ran von außen. Ich hätte dem Button gern ein click Listener verpasst. Ich hab mal debuggt und das Button Objekt ist null.Wer kann da helfen?
     
  15. joschika77, 23.06.2009 #15
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hab noch ne Frage bezüglich des NumberPickers. Der + & - Button hat kein Focus. Ich kann zwar klicken und alles aber die Farbe ändert sich nicht. Die Bilder dazu liegen in dem NumberPicker Beispiel bei. Aber irgendwie funzt es nicht. Muß ich da noch was einstellen oder so?
     
  16. joschika77, 08.07.2009 #16
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hallo. Ich muß das Thema nochmal anschneiden. Mich interessiert das Beispiel vom Anfang des posts, also was viden gepostet hat. Soweit geht das jetzt auch alles, ich bekomme es nur nicht hin wenn ich z.B den Fokus auf den + Button habe, das mir das Bild mit ne anderen Farbe angezeigt wird. Also als wenn es Original wäre. Die Bilder dazu liegen ja bei, leider weiß ich nicht wie ich das implementieren soll. Ich hoffe das jemand sich mit dem Beispiel auskennt und mir helfen kann. MfG
     

Diese Seite empfehlen