Android Code Snippet Change Radiobutton Appearance

Discussion in 'Code Snippets' started by stevel05, Jun 13, 2014.

  1. stevel05

    stevel05 Expert Licensed User

    SubName: SetRadioButtonDrawable

    Description: as an addon to this thread, as it has been asked for a few times, this is an example of changing the RadioButton graphic. You could make the drawable to be anything you want, or load an image for each if preferred.

    Code:
    'Change the size and color of a RadioButton graphic.
    'Pass the required colors for the attributes, size should be at most the smallest side of the view.
    Sub SetRadioButtonDrawable(RBtn As RadioButton,CircleColor As Int,Size As Int,SelectedColor As Int,DisabledColor As Int,StrokeWidth As Int)
        
    Dim Enabled,Selected,Disabled,DisabledSelected As BitmapDrawable
        
    Dim EnabledJO,SelectedJO,DisabledJO,DisabledSelectedJO As JavaObject
        
    Dim SLD As StateListDrawable
        SLD.Initialize

        
    'Changing the padding also determines how far away the text is from the drawing
        Dim Padding As Int = Size / 100 * 50
        
    Dim Radius As Int = (Size - Padding) / 2
        
    Dim InnerPadding As Int = Max(1Dip,1)

        
    Dim BMEnabled,BMSelected,BMDisabled,BMDisabledSelected As Bitmap
        BMEnabled.InitializeMutable(Size,Size)
        BMSelected.InitializeMutable(Size,Size)
        BMDisabled.InitializeMutable(Size,Size)
        BMDisabledSelected.InitializeMutable(Size,Size)

        
    'Draw Enabled State
        Dim CNV As Canvas
        CNV.Initialize2(BMEnabled)
        CNV.DrawCircle(Radius + InnerPadding,Size / 
    2,Radius,CircleColor,False,StrokeWidth)
        Enabled.Initialize(BMEnabled)
        EnabledJO = Enabled
        EnabledJO.RunMethod(
    "setAntiAlias",Array As Object(True))
        Enabled.Gravity = 
    Gravity.left

        
    'Draw Selected state
        Dim CNV1 As Canvas
        CNV1.Initialize2(BMSelected)
        CNV1.DrawCircle(Radius + InnerPadding,Size / 
    2,Radius,CircleColor,False,StrokeWidth)
        
    'Draw the Selected state centered in the box
        CNV1.DrawCircle(Radius + InnerPadding,Size / 2,(Radius - InnerPadding) / 2,SelectedColor,True,StrokeWidth)
        Selected.Initialize(BMSelected)
        SelectedJO = Selected
        SelectedJO.RunMethod(
    "setAntiAlias",Array As Object(True))
        Selected.Gravity = 
    Gravity.left

        
    'Draw Disabled Selected State
        Dim CNV2 As Canvas
        CNV2.Initialize2(BMDisabledSelected)
        CNV2.DrawCircle(Radius + InnerPadding,Size / 
    2,Radius,DisabledColor,False,StrokeWidth)
        
    'Draw the Disabled Selected state centered in the box
        CNV2.DrawCircle(Radius + InnerPadding,Size / 2,(Radius - InnerPadding) / 2,DisabledColor,True,StrokeWidth)
        DisabledSelected.Initialize(BMDisabledSelected)
        DisabledSelectedJO = DisabledSelected
        DisabledSelectedJO.RunMethod(
    "setAntiAlias",Array As Object(True))
        DisabledSelected.Gravity = 
    Gravity.left

        
    'Draw disabled State
        Dim CNV3 As Canvas
        CNV3.Initialize2(BMDisabled)
        CNV3.DrawCircle(Radius + InnerPadding,Size / 
    2,Radius,DisabledColor,False,StrokeWidth)
        Disabled.Initialize(BMDisabled)
        DisabledJO = Disabled
        DisabledJO.RunMethod(
    "setAntiAlias",Array As Object(True))
        Disabled.Gravity = 
    Gravity.left

        
    'Add To the StateList Drawable
        SLD.AddState2(Array As Int(SLD.State_Disabled,SLD.State_Checked),DisabledSelected)
        SLD.AddState(SLD.State_Disabled,Disabled)
        SLD.AddState(SLD.State_Checked,Selected)
        SLD.AddState(SLD.State_Enabled,Enabled)
        SLD.AddCatchAllState(Enabled)
        
    'Add SLD To the CheckBox
        Dim JO As JavaObject = RBtn
        JO.RunMethod(
    "setButtonDrawable",Array As Object(SLD))
    End Sub
    DependsOn: JavaObject

    Call As: where RB5 is a RadioButton
    Code:
    SetRadioButtonDrawable(RB5,Colors.LightGray,Min(RB5.Width,RB5.Height),Colors.Cyan,DisabledColor,2Dip)
    Tags: Change RadioButton graphic image

    A simple project is attached to show the difference with the original RadioButton images.
     

    Attached Files:

    Last edited: Jun 13, 2014
  2. sf0799

    sf0799 Member Licensed User

    Thank you. I like this.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice