Buttons als ausgewählt anzeigen

M

muli

Neues Mitglied
0
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!)
 
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!)
 
  • Danke
Reaktionen: muli
DieGoldeneMitte schrieb:
Wenn der Button sich merken soll, dass er gedrückt wurde, würde ich einen RadioButton nehmen.

Radiobutton oder Checkbox sind vom Problem her nicht möglich.
Kann man das Padding des Buttons "färbeln"? (Das gefiele mir besonders)
 
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:
soma-web schrieb:
Verstehe ich das richtig, du willst das man dem Button das gedrücke nicht anssieht?
Quick and Dirty:
mach ein ImageButton mit Background=@null und schon siet man es nicht :-D
Umgekehrt: man sieht es ihm nicht an, sollte es aber!
 
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
 
  • Danke
Reaktionen: muli
muli schrieb:
Radiobutton oder Checkbox sind vom Problem her nicht möglich.
Kann man das Padding des Buttons "färbeln"? (Das gefiele mir besonders)

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?
 
  • Danke
Reaktionen: muli
soma-web schrieb:
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

Danke! Das ginge zwar, waere aber ein Heidenaufwand (da ich viele
viele derartige Buttons habe)

@alien:
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?
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).
 
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.
 
  • Danke
Reaktionen: muli
soma-web schrieb:
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.
Dumme Frage von mir: kann ich denn dasselbe Bild x-fach anzeigen??

@alien: Solitaire: da muss man sich ja ein Tablet kaufen!
 
Zuletzt bearbeitet:
muli schrieb:
Dumme Frage von mir: kann ich denn dasselbe Bild x-fach anzeigen??

@alien: Solitaire: da muss man sich ja ein Tablet kaufen!

Klar kannst du das, einfach versuchen!
 
  • Danke
Reaktionen: muli
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:
  • Danke
Reaktionen: muli
muli schrieb:
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).

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?
 
  • Danke
Reaktionen: swordi
Danke! Dann werd ich mich mal mit Images "plagen"!
 
the_alien schrieb:
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?
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!
 
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:
Aus reinem Interesse hätte ich dann mal gerne die apk, wenn du halbwegs fertig bist.
 
Zuletzt bearbeitet:
muli schrieb:
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!

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.
 
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.
 
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.
 
  • Danke
Reaktionen: muli

Ähnliche Themen

Manny87
  • Manny87
Antworten
11
Aufrufe
161
swa00
swa00
R
  • raller
Antworten
15
Aufrufe
543
DOT2010
DOT2010
A
  • AnimaAngelo85
Antworten
1
Aufrufe
333
swa00
swa00
Zurück
Oben Unten