Botón de Toggle de Android tamaño personalizado / relleno / espaciado
Estoy tratando de crear un estilo personalizado para mis botones de conmutación Android. Cambiar el color y el texto no fue un problema, pero estoy teniendo problemas para cambiar el tamaño / relleno / espaciado o lo que sea que les permiten aparecer tan innecesariamente grande por defecto. He establecido la altura de wrap_content y el relleno y margen a 0, pero el tamaño del botón sigue siendo tan grande como el botón de alternar predeterminado.
¿Alguien de ustedes sabe qué parámetros tengo que cambiar para eliminar el espacio innecesario entre el texto del botón y el borde?
- cómo guardar togglebutton estado utilizando preferencias compartidas
- Pantalla personalizada de botón de conmutación de Android
- ¿Es posible crear un ToggleButton sin texto?
- Android - ¿Espacio entre TextView y Togglebutton?
- Android: AmazingListView encabezado fijado es intocable
Aquí hay un enlace a una imagen de lo que quiero lograr. De izquierda a derecha: Default ToggleButton, mi actual ToggleButton y el tipo de ToggleButton que quiero.
Aquí está mi código (como añado los botones de forma dinámica, no xml)
ToggleButton button = new ToggleButton(getContext()); button.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); button.setId(IDCreator.getID()); button.setText(tag); button.setTextOff(tag); button.setTextOn(tag); button.setGravity(Gravity.LEFT); button.setPadding(0, 0, 0, 0); button.setBackground(getContext().getResources().getDrawable(R.drawable.toggle_selector));
Gracias por tu ayuda. Saludos cordiales.
Editar: Imagen y Código
- Establecer ToggleButton para reproducir el sonido predeterminado cuando se hace clic en?
- Cómo cambiar el estado ToggleButton mediante programación?
- Botón de alternancia de varios estados
- El evento del botón de conmutación no funciona en varios dispositivos
- Utilice el botón de conmutación estilo Android 4.0
- ¿Cómo saber si el usuario ha cambiado el estado del botón de alternancia?
- Botón de alternancia en el cajón de navegación
- Botón de encendido / apagado en las preferencias y barra de acción - Ice Cream Sandwich Estilo
Si sólo está tratando de cambiar la forma en que se representa el texto dentro del ToggleButton
, entonces debe ajustar los parámetros android:padding
y android:gravity
en el XML de su botón.
Para cambiar el relleno, primero tiene que tomar el texto lejos de ser centrado por defecto (porque cuando se centró el relleno no tiene la capacidad de tener efecto). Usted hace esto por el android:gravity
parámetro de la android:gravity
que es como alinear texto en CSS.
Por ejemplo;
<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left"> </ToggleButton>
Esto alineará el texto a la izquierda del ToggleButton. Sin embargo, esto también lo alineará a la parte superior de forma predeterminada, ya que la gravedad ejerce tanto el eje x como el eje y.
Si desea alinear el centro verticalmente ya la izquierda horizontalmente, haga lo siguiente:
<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left|center"> </ToggleButton>
Esto le dará centrado vertical, pero totalmente a la izquierda en la escala horizontal. Esto hará que el texto ir ontop del borde de su botón y buscar poco atractivo. Usted necesita utilizar las alineaciones junto con un relleno para el texto para conseguirlo exactamente donde usted desea.
Por ejemplo:
<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding_left="10dp" android:gravity="left|center"> </ToggleButton>
Esto agrega el relleno a la izquierda solamente que significa que usted puede fijarlo tanto lejos de la frontera como usted tiene gusto.
Usted puede jugar con el relleno para cada lado y la gravedad con el fin de escalar el texto a sus necesidades, pero esta sería la mejor manera de controlar la alineación de texto interno del ToggleButton.
Esto le dará el ancho de la cadena, es decir, Texto en su caso.
Paint paint = toggleButton.getPaint(); float length = paint.measureText(YOUR_STRING);
Esto le da el ancho de la cadena que tendría en la pantalla. Ahora configure el ancho del botón de conmutación a través de LayoutParams.
Digamos que la disposición de los padres de su botón de conmutación es LinearLayout. Por lo que debe ir como:
toggleButton.setLayoutParams(new LayoutParams(WIDTH_YOU_CALCULATED,LinearLayout.LayoutParams.WRAP_CONTENT));
Esto establecerá el ancho y la altura de su ToggleButton a lo que haya calculado.
Me doy cuenta de que esto es obsoleto, pero quizás usar setScaleX ({proporcionar un flotador 0.0 – 1.0}) y setScaleY ({proporcionar un flotador 0.0 – 1.0}) podría ser la respuesta para la publicación original (cómo cambiar el tamaño del botón de alternar ).
Utilice CheckedTextView en su lugar: https://stackoverflow.com/a/36084999/377320 Es sólo un TextView regular con estado marcado, por lo que no paddings extraño, etc
- Configuración del color de fondo de los elementos ListView en el botón
- Utilizar MPChartLibrary dentro de un fragmento