switch style studio android android-layout button togglebutton

android - style - toggle button matlab



Es posible crear un ToggleButton sin texto? (9)

Solo establece lo siguiente:

<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="" />

Y, el estilo xml, si necesita ...

<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>

Espero que ayude ~

Quiero crear un ToggleButton predeterminado de ToggleButton como este:

pero quiero crearlo sin TEXTO

Intenté con este código:

ToggleButton tb = new ToggleButton(map); tb.setText(null); tb.setTextOn(null); tb.setTextOff(null);

Pero está dejando un espacio vacío en la parte superior de la barra verde horizontal.

No quiero ese espacio vacío, solo quiero la barra verde horizontal.

¿Cómo lograrlo?

Gracias


El espacio vacío en la parte superior es causado por el 2 Ninepatch ( btn_toggle_off.9.png y btn_toggle_on.9.png ) utilizado en el estilo de toggleButton predeterminado.

Para centrar perfectamente la barra horizontal, debe crear un nuevo estilo para ToggleButton que usará dos nuevos formularios derivados de nueve parches originales.

Editar: Método que requiere XML mínimo:

  • crea tus dos nueve parches para tu togglebutton, my_btn_toggle : my_btn_toggle _on y my_btn_toggle_off

  • en la carpeta my_btn_toggle.xml , crea 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>

  • en su código, agregue 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)


<ToggleButton android:id="@+id/setting_tb" style="@style/style_setting_tb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:checked="true" android:gravity="center" android:minHeight="0dp" android:minWidth="0dp" android:textColor="@color/White" android:textOff="" android:textOn="" android:textSize="14sp" />


Ya me lo imaginaba

android:textColor="@android:color/transparent"


Utilizando

<ToggleButton ... android:textOff="@null" android:textOn="@null" android:textSize="0dp" />

no solo hará que el texto desaparezca, sino que también eliminará el espacio vacío donde de otro modo se mostraría.


Es mucho más ToggleButton usar CheckBox lugar de ToggleButton . Tienen los mismos estados y, por lo tanto, logran la misma funcionalidad, pero puede cambiar fácilmente la apariencia de CheckBox definiendo su atributo <android:button="@drawable/..."> .


<ToggleButton android:id="@+id/tooglebutton" android:layout_width="60dp" android:layout_height="25dp" android:textOff="off" android:textOn="on" android:textSize="0dp" />


No es la solución más elegante, pero podrías probar tb.setTextSize(0); si solo estás tratando de ocultar el espacio extra en la parte superior. Puede ser necesario configurar textOn / textOff en una cadena vacía: tb.setTextOn("");

EDITAR: Mejor opción sería crear tu propio botón personalizado extend Button , mantener el estado (mira esta publicación SO para estados presionados / sin presionar : Presionado el estado del botón android ) y encontrar los activos para establecer como el estado apropiado ...


Llene el estilo XML de esta manera ... la magia es el color del texto como transparente ...

android:layout_width="wrap_content" android:layout_height="fill_parent" android:textOff="blabla" android:textOn="blablabla" android:textColor="@android:color/transparent" android:background="@drawable/boutmediumrouge" />