It is possible to create a ToggleButton without text?

The empty space in the top is caused by the 2 Ninepatch (btn_toggle_off.9.png and btn_toggle_on.9.png ) used in default toggleButton style.

To perfectly center the horizontal bar, you must create a new style for ToggleButton that will use two new ninepatch derived form original.

Edit: Method requiring minimal XML:

  • create your two ninepatches for your togglebutton, name it: my_btn_toggle_on and my_btn_toggle_off

  • in drawable folder, create my_btn_toggle.xml:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="false" android:drawable="@drawable/my_btn_toggle_off" />
        <item android:state_checked="true" android:drawable="@drawable/my_btn_toggle_on" />
    </selector>
    
  • in your code, add tb.setBackgroundResource(R.drawable.my_btn_toggle) :

    ToggleButton tb = new ToggleButton(map);
    tb.setText(null);
    tb.setTextOn(null);
    tb.setTextOff(null);
    tb.setBackgroundResource(R.drawable.my_btn_toggle)
    

Just set following things:

<ToggleButton android:id="@+id/tbtn1" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@drawable/bg_check"
 android:textOn="" 
 android:textOff="" 
 android:text="" />

And, the style xml, if you need...

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_checked="true" 
android:drawable="@drawable/bg_check_on" /> <!-- pressed -->

  <item android:drawable="@drawable/bg_check_off" /> <!-- default/unchecked -->
</selector>

Hope it helps~