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

Buttons als ausgewählt anzeigen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von muli, 21.07.2011.

  1. muli, 21.07.2011 #1
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Ich habe einige Buttons, die zwar auf onClick reagieren, denen aber
    man nicht "ansieht", daß sie ausgewählt worden sind (also kein highlite oder sowas wie ein Mauszeiger).
    setSelected(true) funktioniert nicht,
    setPressed(true) funktioniert auch nicht.

    Kann mir bitte jemand helfen? (Moechte nach Möglichkeit Standards
    verwenden!)
     
  2. DieGoldeneMitte, 21.07.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Wenn der Button sich merken soll, dass er gedrückt wurde, würde ich einen RadioButton nehmen.

    Wenn du meinst, dass er während des Drauftippens nicht gedrückt aussieht, dass liegt es vermutlich daran, dass du den TouchEvent im EventListener konsumierst. (der State Change kommt erst nach dem Listener dran!)
     
    muli bedankt sich.
  3. muli, 21.07.2011 #3
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Radiobutton oder Checkbox sind vom Problem her nicht möglich.
    Kann man das Padding des Buttons "färbeln"? (Das gefiele mir besonders)
     
  4. soma-web, 21.07.2011 #4
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Verstehe ich das richtig, du willst, dass man dem Button das gedrückte nicht ansieht?
    Quick and Dirty:
    mach ein ImageButton mit Background=@null und schon sieht man es nicht :-D
     
    Zuletzt bearbeitet: 21.07.2011
  5. muli, 21.07.2011 #5
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Umgekehrt: man sieht es ihm nicht an, sollte es aber!
     
  6. soma-web, 21.07.2011 #6
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Nochmal der Quick And dirty versuch:
    Mach ein ImageButton mit zwei verschedenen Images, einmal ein gedrücktes und einmal ein ungedrücktes) und ändere die Ressource des Imagebuttons auf das gedrückte image beim drücken ;) Mit ImageButtons kannst du die Buttons auch so gestalten wie du es willst
     
    muli bedankt sich.
  7. the_alien, 21.07.2011 #7
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Du willst die Funktion einer Checkbox nachbauen, aber eine Checkbox ist nicht möglich? Ist da nicht irgendwie was im Konzept falsch?

    Würde denn ein ToggleButton gehen?
     
    muli bedankt sich.
  8. muli, 21.07.2011 #8
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Danke! Das ginge zwar, waere aber ein Heidenaufwand (da ich viele
    viele derartige Buttons habe)

    @alien:
    Checkbox: nicht ganz: die Buttons haben Text und man soll auf ihnen Operationen ausfuehren koennen.

    ToggleButtons haben das Problem, dass man einen Button oefter anklicken koennen soll, ohne dass er staendig hin und her wechselt, dh. anklicken (egal wie oft) = auswählen (den Rest macht dann schon der code).
     
  9. soma-web, 21.07.2011 #9
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Versuchst du gerade etwas neu zu erfinden was man auch einfacher Lösen könnte? Viele Viele Buttons? Wo ist da der Aufwand? 2 Pics erstellen und dann ein ImageButton Array anlegen. Dann per switch case im onClick abfragen welcher es ist und demjenigen eine andere Ressource zuordnen und deine Operation.
     
    muli bedankt sich.
  10. muli, 21.07.2011 #10
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Dumme Frage von mir: kann ich denn dasselbe Bild x-fach anzeigen??

    @alien: Solitaire: da muss man sich ja ein Tablet kaufen!
     
    Zuletzt bearbeitet: 21.07.2011
  11. soma-web, 21.07.2011 #11
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Klar kannst du das, einfach versuchen!
     
    muli bedankt sich.
  12. soma-web, 21.07.2011 #12
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Nur mal als kleines Beispiel aus einer meiner Apps, schnell selber geschreibene RadioButtons.

    Code:
    
    ImageButton[] imgb_RB = new ImageButton[6];
    ...
    onCreate(){
    imgb_RB[0] =(ImageButton)findViewById(R.id.imgb_Kreditbetrag);
            imgb_RB[1] =(ImageButton)findViewById(R.id.imgb_zinssatznom);
            imgb_RB[2] =(ImageButton)findViewById(R.id.imgb_zinssatzeff);
            imgb_RB[3] =(ImageButton)findViewById(R.id.imgb_laugzeit);
            imgb_RB[4] =(ImageButton)findViewById(R.id.imgb_rueckrate);
            imgb_RB[5] =(ImageButton)findViewById(R.id.imgb_restschuld);
            imgb_RB[0].setOnClickListener(RB_Click);
            imgb_RB[1].setOnClickListener(RB_Click);
            imgb_RB[2].setOnClickListener(RB_Click);
            imgb_RB[3].setOnClickListener(RB_Click);
            imgb_RB[4].setOnClickListener(RB_Click);
            imgb_RB[5].setOnClickListener(RB_Click);
    
    ...
    }
     private OnClickListener RB_Click = new OnClickListener(){
        	public void onClick(View v){    	 
        		int temp;
        		if(v==imgb_RB[0]){    			   
        			rbutton[0]=true;    
        			temp=CheckTrueButton(0);
        			imgb_RB[temp].setImageResource(R.drawable.radiobtn_inaktiv);    			  			
        			imgb_RB[0].setImageResource(R.drawable.radiobtn_aktiv);    	
        			edittext[0].setText("");
        		}else if(v==imgb_RB[1]){        		
        			rbutton[1]=true;    			
        			temp=CheckTrueButton(1);    			
        			imgb_RB[temp].setImageResource(R.drawable.radiobtn_inaktiv);
        			imgb_RB[1].setImageResource(R.drawable.radiobtn_aktiv);
        			edittext[1].setText("");
            	}else if(v==imgb_RB[2]){        		 
            		rbutton[2]=true;
            		temp=CheckTrueButton(2);        		
            		imgb_RB[temp].setImageResource(R.drawable.radiobtn_inaktiv);
            		imgb_RB[2].setImageResource(R.drawable.radiobtn_aktiv);
            		edittext[2].setText("");
            	}else if(v==imgb_RB[3]){            	
            		rbutton[3]=true; 
            		temp=CheckTrueButton(3);        		
            		imgb_RB[temp].setImageResource(R.drawable.radiobtn_inaktiv);
            		imgb_RB[3].setImageResource(R.drawable.radiobtn_aktiv);
            		edittext[3].setText("");
                }else if(v==imgb_RB[4]){        		 
                	rbutton[4]=true; 
                	temp=CheckTrueButton(4);            	
                	imgb_RB[temp].setImageResource(R.drawable.radiobtn_inaktiv);
                	imgb_RB[4].setImageResource(R.drawable.radiobtn_aktiv);
                	edittext[4].setText("");
            	}else if(v==imgb_RB[5]){        		   
            		rbutton[5]=true;
            		temp=CheckTrueButton(5);        				
            		imgb_RB[temp].setImageResource(R.drawable.radiobtn_inaktiv);
            		imgb_RB[5].setImageResource(R.drawable.radiobtn_aktiv);
            		edittext[5].setText("");
            	}
        	}
        };
    
     
    Zuletzt bearbeitet: 21.07.2011
    muli bedankt sich.
  13. the_alien, 21.07.2011 #13
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Also irgendwie verstehe ich das GUI Konzept nicht. Bei jedem einzelnen Klick wird die gleiche Aktion ausgeführt. Aber ein normaler Knopf ist nicht OK weil er immer gleich aussieht... aber es wird doch auch immer die gleiche Aktion ausgeführt, warum soll denn dann der Button sich verändern?
     
    swordi bedankt sich.
  14. muli, 21.07.2011 #14
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Danke! Dann werd ich mich mal mit Images "plagen"!
     
  15. muli, 21.07.2011 #15
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Man soll sehen, welcher Button gerade ausgewählt ist, und dann kann man eine Operation darauf waehlen. Dachte mir, es muesste eine Standard
    moeglichkeit geben, die einfach den Rand highlitet, so wie man das von
    Java/Mauszeigern gewohnt ist.
    Danke jedenfalls sehr für Eure Antworten/Mühen!
     
  16. DieGoldeneMitte, 21.07.2011 #16
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Das was du da beschreibst, sind im Kontext von Touchoberflächen halt Radiobuttons.

    Wenn man will, dass der gewählte Button nicht so einen Kreis haben soll, kann man das sicher mit einem geeigneten Theme ändern.

    ADD: Achja, da gibt es noch den "Focus", den kann man auch auf Buttons schieben, aber da dann ein Verhalten dran zu hängen wäre extrem schlechter Stil (weil der User mit dem Steuerkreuz diesen Focus verschieben kann/will).
     
    Zuletzt bearbeitet: 21.07.2011
  17. soma-web, 21.07.2011 #17
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Aus reinem Interesse hätte ich dann mal gerne die apk, wenn du halbwegs fertig bist.
     
    Zuletzt bearbeitet: 21.07.2011
  18. the_alien, 21.07.2011 #18
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Es gibt einen Focus auf dem Button wenn man mit einem evtl vorhanden Trackball darauf geht. Das ist genau das gleiche wie das Highlighting was du aus dem normalen Java kennst.
    Alles andere ist doch totaler Käse. Der User ist doch verwirrt wenn der Button eine andere Farbe hat als vorher. Da erwartet man eine andere Bedeutung hinter.
     
  19. muli, 21.07.2011 #19
    muli

    muli Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    10.07.2011
    Phone:
    HTC Desire S
    Nun, ich malträtiere Buttons - fuer die Felder eines Sudokus; da ich zb auch löschen können muss (uvam), gibt es ein "aktuelles Feld", auf dem
    diverse Operationen exekutiert werden können.
    Ohne Kennung gehts wirklich nicht.
     
  20. the_alien, 21.07.2011 #20
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Die Felder sind Buttons? Und du willst immer nur eins ausgewählt haben? Dann RadioButton...
    Ist das ein kleines Übungsprojekt? Dann ok, wenn nicht schmeiss die Idee ganz schnell wieder weg und programmiere einen eigenen View.
     
    muli bedankt sich.

Diese Seite empfehlen