tamaño - Botón de Android con icono y texto
imagebutton android studio (4)
@Liem Vo es correcto, pero si usa End / Start en lugar de Right / Left, el estudio de Android lo apreciará :)
<Button
android:id="@+id/bSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Search"
android:drawableStart="@android:drawable/ic_menu_search"
android:textSize="24sp"/>
Tengo algunos botones como este en mi aplicación:
<Button
android:id="@+id/bSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Search"
android:textSize="24sp" />
Estoy tratando de crear un mismo botón con texto y un ícono. android: drawableLeft no funciona para mí (Tal vez lo haría, pero no sé cómo establecer una altura máxima para el icono).
Así que creé un LinearLayout con ImageView y TextView y lo hice actuar como un botón:
<LinearLayout
android:id="@+id/bSearch2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:padding="16dp"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:adjustViewBounds="true"
android:maxHeight="30dp"
android:maxWidth="30dp"
android:scaleType="fitCenter"
android:src="@drawable/search_icon" />
<TextView
android:id="@+id/tvSearchCaption"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="24sp"
android:paddingRight="30dp"
android:gravity="center"
android:text="Search" />
</LinearLayout>
Mi nuevo botón es exactamente lo que quiero (tamaño de letra, icono y ubicación de texto). Pero no se parece a mis botones predeterminados:
Así que lo intenté, para cambiar el fondo y el color del texto de mi nuevo Botón:
Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());
Esto da un resultado extraño, mi viejo botón se estropea:
Cuando cambio el orden de estos dos botones en el XML, por lo que el "nuevo botón" va primero, produce otro resultado extraño:
Ahora noté que cuando trato de presionar el botón anterior, se presiona el nuevo.
¿Algunas ideas?
Para agregar una imagen a la izquierda, derecha, arriba o abajo, puede usar atributos como este:
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom
El código de muestra se da arriba. También puede lograr esto usando el diseño relativo.
Para cualquiera que desee hacer esto de forma dinámica, setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)
en el objeto botones.
Muestra
Button search = (Button) findViewById(R.id.yoursearchbutton);
search.setCompoundDrawables(''your_drawable'',null,null,null);
Prueba este.
<Button
android:id="@+id/bSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Search"
android:drawableLeft="@android:drawable/ic_menu_search"
android:textSize="24sp"/>