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 ymy_btn_toggle_off
en la carpeta
my_btn_toggle.xml
, creamy_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"
/>