RadioButton mit Image - "Button" ausblenden

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MetBo, 07.01.2011.

  1. MetBo, 07.01.2011 #1
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Hallo,

    ich habe mal wieder ein Problem mit dem Layout.

    Mit der RadioGroup und zwei RadioButtons mit Image habe ich mir einen "Chooser" gebastelt (siehe Bild).
    [​IMG]

    Jetzt ist die Frage, wie kann ich die RadioButtons ausblenden? Das Image des Buttons sollte aber noch dargestellt werden - auch die Funktionalität darf nicht beeinträchtigt werden.

    Mein bisheriger Code:
    Code:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="fill_parent" android:layout_height="wrap_content"
    	android:layout_gravity="center_horizontal">
    
    	<RadioGroup android:layout_width="fill_parent"
    		android:layout_height="wrap_content" android:orientation="horizontal"
    		android:id="@+id/rgrpChooserArticlelist" android:layout_gravity="center_horizontal"
    		android:background="@drawable/titlebar_background">
    
    		<RadioButton android:id="@+id/radArticlesTdyArticlelist"
    			android:background="@drawable/chooser_today_sel"
    			android:layout_height="40dip" android:width="80dip"
    			android:visibility="visible" android:layout_gravity="center" />
    
    		<RadioButton android:id="@+id/radArticlesOldArticlelist"
    			android:background="@drawable/chooser_older_sel"
    			android:layout_height="40dip" android:width="80dip"
    			android:visibility="visible" />
    
    	</RadioGroup>
    
    </LinearLayout>
    Und, gibt es eine Möglichkeit, die Buttons zu zentrieren?

    Danke,
    Grüße
     

    Anhänge:

  2. MetBo, 07.01.2011 #2
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Hat keiner eine Idee? :(
     
  3. tobbbbi, 11.01.2011 #3
    tobbbbi

    tobbbbi Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    3
    Registriert seit:
    06.01.2011
    Also ich glaube ja nicht, dass man das auf einfache Art und Weise hinbekommt.
    Da es feste Controls sind, die von sich aus keine derartige Funktionalität bieten, musst du wohl wenn dann tiefer gehen und den dich störenden Knopf mit Draw während der Laufzeit überpinseln.
    Aber warum nimmst du nicht einfach zwei ImageButtons und lässt es nur zu, dass einer gleichzeitig selektiert ist? Warum bist du grade so auf die RadioButtons aus?
     
  4. swordi, 12.01.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    damit gehts glaub ich

    radio1.setCompoundDrawablesWithIntrinsicBounds(xxx)
     
  5. tobbbbi, 13.01.2011 #5
    tobbbbi

    tobbbbi Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    3
    Registriert seit:
    06.01.2011
    Ist leider nicht das Richtige.
    Diese Methode setzt lediglich ein drawable ZWISCHEN Text und dem selektierbaren RadioButton-Icon.

    Habe aber noch was anderes gefunden.
    public void setButtonDrawable (int resid)

    Damit kannst du direkt das Bild für den RadioButton setzen und das Standardicon wird überzeichnet.

    Vorteil: Du kannst dir die ImageView sparen, da du jetzt dein selbst erstelltes drawable direkt auf den RadioButton setzen kannst.

    Nachteil: Es gibt so noch keine visuelle Anzeige von selektiert und nicht selektiert. Du musst also für den selektierten Zustand noch jeweils eine eigene Drawable erstellen (zB. mit Rahmen außen herum etc.) und in Abhängigkeit vom aktuellen Zustand über einen Eventhandler setzen.



     
  6. swordi, 13.01.2011 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ah dann hab ich die falsche methode genommen ;)

    hab das mal gemacht, und auf die schnelle nur die zeile gefunden ;) ein versuch wars wert ;)
     
  7. MetBo, 14.01.2011 #7
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Problem habe ich mit folgendem Code gelöst:

    Code:
    <RadioGroup android:layout_width="fill_parent"
    		android:layout_centerHorizontal="true" android:orientation="horizontal"
    		android:layout_height="wrap_content" android:id="@+id/rgrpChooserArticlelist"
    		android:background="@drawable/titlebar_background" android:gravity="center">
    
    		<RadioButton android:id="@+id/radArticlesTdyArticlelist"
    			android:button="@drawable/chooser_today_sel" android:layout_height="40dip"
    			android:width="100dip" android:visibility="visible" />
    
    		<RadioButton android:id="@+id/radArticlesOldArticlelist"
    			android:button="@drawable/chooser_older_sel" android:layout_height="40dip"
    			android:width="100dip" android:visibility="visible" />
    
    	</RadioGroup>
    chooser_today_sel:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    
    <selector 
    	xmlns:android="http://schemas.android.com/apk/res/android" >
    	
       	<item 
       		android:state_checked="true" 
       		android:state_window_focused="false" 
       		android:drawable="@drawable/chooser_today_press" /> 
      
      	<item 
      		android:state_checked="false" 
      		android:state_window_focused="false" 
      		android:drawable="@drawable/chooser_today" /> 
      	
      	<item 
      		android:state_checked="true" 
      		android:state_pressed="true" 
      		android:drawable="@drawable/chooser_today_press" /> 
      
      	<item 
      		android:state_checked="false" 
      		android:state_pressed="true" 
      		android:drawable="@drawable/chooser_today" /> 
      	
      	<item 
      		android:state_checked="true" 
      		android:state_focused="true" 
      		android:drawable="@drawable/chooser_today_press" /> 
      	
      	<item 
      		android:state_checked="false" 
      		android:state_focused="true" 
      		android:drawable="@drawable/chooser_today" /> 
      	
      	<item 
      		android:state_checked="false" 
      		android:drawable="@drawable/chooser_today" /> 
      
      	<item 
      		android:state_checked="true" 
      		android:drawable="@drawable/chooser_today_press" /> 
       	    
    </selector>
    Ich habe einfach einen Selector erstellt und diesen als "android:button" zugewiesen.

    Danke
     

Diese Seite empfehlen