¿Cómo Center DrawableTop y Texto verticalmente en el botón en Android? -- xml campo con android campo con layout campo con button camp Relacionados El problema

How to center drawableTop and text vertically on the Button in Android?


15
vote

problema

Español

Tengo el botón definido de la siguiente manera:

  <Button  android:drawableTop="@drawable/ico"  android:gravity="center"  android:id="@+id/StartButton2x2"  android:text="@string/Widget2x2StartBtnLabel"  android:layout_width="0dip"   android:layout_height="fill_parent"  android:layout_weight="1"   android:background="@drawable/widgetbtn_bg" />   

El problema es que la imagen 'DRAJABLETOP' está alineada con el borde superior de la vista Botón. Me gustaría centrarlo (junto con la etiqueta de texto) verticalmente en el botón.

'Android: Gravity' parece funcionar solo en la etiqueta de texto. No afecta el posicionamiento 'DRAJABLETOP'.

Pude centrarlo verticalmente usando 'Android: PaddingTop', pero eso no parece ser una buena idea. Supongo que no funcionaría correctamente en diferentes resolución / tamaño de la pantalla.

Original en ingles

I have the Button defined as follows:

<Button  android:drawableTop="@drawable/ico"  android:gravity="center"  android:id="@+id/StartButton2x2"  android:text="@string/Widget2x2StartBtnLabel"  android:layout_width="0dip"   android:layout_height="fill_parent"  android:layout_weight="1"   android:background="@drawable/widgetbtn_bg" /> 

The problem is that 'drawableTop' image is aligned to the top border of the Button view. I would like to center it (together with text label) vertically on the button.

'android:gravity' seems to work only on text label. It does not affect 'drawableTop' positioning.

I was able to center it vertically using 'android:paddingTop' - but that does not seem to be a good idea. I guess it would not work properly on different screen resolution/size.

           
 
 

Lista de respuestas

13
 
vote
vote
La mejor respuesta
 

nueva respuesta

Aparentemente entendí mal la pregunta. La respuesta es usar:

  <LinearLayout     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="vertical"     style="@android:style/Widget.Button">   

... y encierre un ImageView y un TextView dentro.


Antigua respuesta

Aquí hay un pensamiento: envuelva su botón en un framelayout. Algo como:

  <FrameLayout     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:foreground="@drawable/ico"     android:foregroundGravity="center">     <Button         android:gravity="center_vertical"         android:id="@+id/StartButton2x2"         android:text="@string/Widget2x2StartBtnLabel"         android:layout_width="0dip"         android:layout_height="fill_parent"         android:layout_weight="1"          android:background="@drawable/widgetbtn_bg" /> </FrameLayout>   

BTW, ¿qué pasa con android:layout_width="0dip" ? No parece correcto

 

New answer

Apparently I misunderstood the question. The answer is to use:

<LinearLayout     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="vertical"     style="@android:style/Widget.Button"> 

...and enclose an ImageView and a TextView inside.


Old answer

Here's a thought: wrap your button in a FrameLayout. Soemthing like:

<FrameLayout     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:foreground="@drawable/ico"     android:foregroundGravity="center">     <Button         android:gravity="center_vertical"         android:id="@+id/StartButton2x2"         android:text="@string/Widget2x2StartBtnLabel"         android:layout_width="0dip"         android:layout_height="fill_parent"         android:layout_weight="1"          android:background="@drawable/widgetbtn_bg" /> </FrameLayout> 

Btw, what's up with android:layout_width="0dip"? Doesn't seem right.

 
 
   
   
9
 
vote

'Android: Gravity' parece funcionar solamente en la etiqueta de texto. No afecta Posicionamiento de 'DRAJABLETOP'.

correcto.

pude centrarlo verticalmente utilizando 'Android: PaddingTop', pero eso No parece ser una buena idea. I Supongo que no funcionaría correctamente en Diferentes resolución / tamaño de la pantalla.

Es posible que pueda resolver esto usando recursos de dimensión.

Sin embargo, aparte de a través de acolchado, no puede "Centro Dibujado y texto verticalmente en el botón". La característica dibujable de Button no es muy configurable.

 

'android:gravity' seems to work only on text label. It does not affect 'drawableTop' positioning.

Correct.

I was able to center it vertically using 'android:paddingTop' - but that does not seem to be a good idea. I guess it would not work properly on different screen resolution/size.

You might be able to solve this by using dimension resources.

However, other than via padding, you cannot "center drawableTop and text vertically on the Button". The drawable feature of Button is not very configurable.

 
 
     
     
0
 
vote

Puede usar la vista de texto con su propiedad.

  main = parseFloat(document.getElementById("main").style.width) centerWidth = main - (parseFloat(document.getElementById("left").style.width) + parseFloat(document.getElementById("right").style.width)); document.getElementById("center").style.width = centerWidth + "px" 0  
 

You can use textview with its property.

<LinearLayout             style="@android:style/Widget.Button"             android:layout_width="fill_parent"             android:layout_height="fill_parent"             android:orientation="vertical" >              <TextView                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:drawableLeft="@drawable/.."                 android:text="" />         </LinearLayout> 
 
 
-1
 
vote
  main = parseFloat(document.getElementById("main").style.width) centerWidth = main - (parseFloat(document.getElementById("left").style.width) + parseFloat(document.getElementById("right").style.width)); document.getElementById("center").style.width = centerWidth + "px" 111  

Estaba bien con eso.

 
<Button   android:id="@+id/....."   android:...............   .......................   android:gravity="center_horizontal" /> 

I was ok with it.

 
 
-2
 
vote

Uso main = parseFloat(document.getElementById("main").style.width) centerWidth = main - (parseFloat(document.getElementById("left").style.width) + parseFloat(document.getElementById("right").style.width)); document.getElementById("center").style.width = centerWidth + "px" 2 en lugar de fondo

No olvides cambiar

  main = parseFloat(document.getElementById("main").style.width) centerWidth = main - (parseFloat(document.getElementById("left").style.width) + parseFloat(document.getElementById("right").style.width)); document.getElementById("center").style.width = centerWidth + "px" 3  
 

Use android:drawableTop="@drawable/Icon" instead of background

Don't forget to change

android:layout_width="fill_parent" android:layout_height="wrap_content" 
 
 

Relacionados problema

0  Botón JavaScript seleccionado OnLload  ( Javascript button selected onload ) 
A CUALQUIERA DIGA CÓMO PUEDO HACER UN BOTÓN EN LA PÁGINA ÚLTIMA ENOGRADA. AC Tengo una página de inicio de sesión y quiero hacer el botón de inicio de sesión ...

7  Botón Tweet - Hiding Cero Count  ( Tweet button hiding zero count ) 
Estoy interesado en agregar a algunos de mis sitios el oficial botón Tweet que Twitter ha liberado. Para aquellos inconscientes, el botón Tweet es un simp...

6  WPF: botón Mnemonic no funciona si coloca el botón en una barra de herramientas  ( Wpf button mnemonic does not work if placing the button in a toolbar ) 
Si coloco un Button dentro de un WPF0 en WPF: WPF111 El texto del botón muestra "_ & gt;" en lugar de solo "& gt"; " y la mnemotécnica no funciona. ...

0  El parámetro de origen de autocompletar jquery no actualiza  ( Jquery autocomplete source parameter does not update ) 
Estoy usando el script de autocompletar de jquery para un elemento de entrada de texto, pero el problema es que la variable Lang en la fuente URI no se actual...

0  Cambio de contenidos de un botón programáticamente  ( Changing contents of a button programmatically ) 
Tengo un botón llamado BTNLOGIN, y deseo cambiar los contenidos de este botón cuando cambie una variable. Básicamente, tengo una pantalla de inicio de sesión,...

1  ¿Cómo puedo poner los iconos en un botón de entrada de jQuery UI?  ( How can i put icons on a jquery ui input button ) 
Basado en la documentación del botón JQERY UI, probé lo siguiente: <jquery>$("#test").button({ icons: { primary:'ui-icon-gear' } });</jquery> <input id="te...

8  Android: ¿Cómo deshabilitar el botón de búsqueda, cómo implementar ONSearchRequest ()?  ( Android how to disable search button how to implement onsearchrequested ) 
revisado lo siguiente: ¿Cómo haber hecho clic en el botón de búsqueda del teléfono no haga nada? / a> Pero no funciona para mí. ¿Alguien tiene alguna otra ...

0  Prueba si el usuario ha escrito el formato de fecha ASP.NET (VB)  ( Test if the user has typed date format asp net vb ) 
Tengo dos cuadros de texto llamados BIRTH & amp; EMAIL , y debo probar el botón en el botón, si el usuario ha escrito una fecha y un amplificador; Formato ...

4  Creación de un menú, pero uno de los dos botones no funciona correctamente  ( Creating a menu but one of the two buttons does not properly work ) 
public class SuperActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState...

0  Error Iniciar sesión Botón Facebook  ( Error login facebook button ) 
He insertado en mi sitio web un botón de inicio de sesión con Facebook. Pero cuando haga clic en este botón e inserte mi usuario y contraseña (Facebook), re...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos