2012-05-17 19 views

Respuesta

6

El botón Holo temática estándar es parcialmente transparente. Puede crear una nueva imagen de botón 9.png para usar en el botón o crear un botón nuevo usando drawable.

Aquí hay un enlace sobre cómo hacer esto último:

http://droidapp.co.uk/?p=309

+1

¿Cuál es la forma más sencilla? ¿No puedo simplemente personalizar el botón como no transparente? –

+0

La segunda opción es bastante directa. Simplemente puede cambiar el fondo del botón a un color sólido (es decir, # 999999), pero eso no se vería bien y no le daría al botón un estado presionado que cause una mala experiencia del usuario. – Tony

3

se puede poner el botón en el diseño de marcos por separado para que su vista suele afectar el botón y esa es mi idea

1

Guardar a continuación código como XML en la carpeta estirable y dar a este XML como fondo de botón

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="0dp" android:color="#ffffff" /> 
    <solid android:color="#000000"/> 
    <corners android:radius="1px"/> 
    <padding android:left="5dp" android:top="3dp" android:right="5dp" android:bottom="3dp" /> 
</shape> 

Ex:

android:background="@drawable/<< your file name>>" 
31

Establezca el fondo en @android:drawable/btn_default para obtener r id de la transparencia del tema holo

+3

Esto también cambia el gráfico al dispositivo predeterminado (es decir, no holo). – Timmmm

+2

Respuesta perfecta. Gracias. –

+0

¡Es la respuesta perfecta! ¿Sabes cómo aplicarlo a otros controles? (especialmente a EditText) – Bronek

0

La transparencia holo está realmente integrada en los archivos PNG. Entonces, la única manera real de cambiarlo es editar los PNG y hacerlos no transparentes. Esto en realidad no es nada fácil. Necesita multiplicar el canal alfa de la imagen por 255/102. ¡Lo cual no es fácil!

Pero como soy tan genial, encontré la manera de hacerlo. Básicamente copié todos los PNG y XML relevantes en su propia estructura de directorios (los botones solo tienen las versiones -mdpi, -hdpi y -xhdpi). Luego ejecuté esto:

para ARCHIVO en find . -name *.png; do mogrify -evaluate Multiply 2.5 -channel Alpha $ FILE; hecho

¡Trabajo hecho! En realidad, no funcionó para los botones desactivados por alguna razón, creo que porque el centro es súper transparente, pero eso no me importa demasiado. Tendrá que usar un valor superior a 2.5 para esas imágenes si las quiere totalmente no transparentes.

Anway el resultado es here.

+0

Esto es excelente, pero cuando dices "Entonces ejecuté esto ...", donde ¿ejecutas ese código? – Floris

1

Estaba con el mismo problema pero con ToggleButton. Una solución fea pero rápida fue colocar un ImageView justo detrás del botón y cambiar su margin s, background y alpha para que se ajuste al botón. Por ejemplo, dentro de un RelativeLayout:

<ImageView 
    android:layout_alignLeft="@+id/toggleButton" 
    android:layout_alignBottom="@+id/toggleButton" 
    android:layout_alignRight="@+id/toggleButton" 
    android:layout_alignTop="@+id/toggleButton" 
    style="@style/HackBackgroundToggleButton" /> 

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/toggleButton" 
    ... /> 

Y, en un esfuerzo por reducir el hack visible, el estilo extraída:

<style name="HackBackgroundToggleButton"> 
    <item name="android:layout_width">84dp</item> 
    <item name="android:layout_height">42dp</item> 
    <item name="android:background">#FFFFFF</item> 
    <item name="android:layout_marginTop">4dp</item> 
    <item name="android:layout_marginLeft">4dp</item> 
    <item name="android:layout_marginRight">4dp</item> 
    <item name="android:layout_marginBottom">4dp</item> 
    <item name="android:alpha">0.75</item> 
</style> 
Cuestiones relacionadas