2012-05-17 2 views
17

Я написал пользовательский вид, который рисует круг. Затем я положил его на относительную компоновку. Также я ставлю стандартную кнопку, чтобы они перекрывались. И я вижу, что кнопка прозрачна. Как сделать его непрозрачным?Как сделать кнопку непрозрачной?

enter image description here

ответ

6

кнопка стандартной Холо тематические частично прозрачен. Вы можете создать новую кнопку 9.png для использования в кнопке или создать новую кнопку с помощью drawable.

Вот ссылка о том, как сделать последний:

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

+1

Что это самый простой способ? Не могу ли я просто нарисовать кнопку как непрозрачную? –

+0

Второй вариант довольно прямолинейный. Вы можете просто изменить фон кнопки на сплошной цвет (т. Е. # 999999), но это будет выглядеть не очень хорошо и не даст нажатой кнопке состояния, вызывающего плохой пользовательский интерфейс. – Tony

3

вы можете поместить кнопку в отдельном макете кадра, так что ваше мнение не повлияет на кнопку, и вот моя идея

1

сохранить ниже код, как XML в вытяжке папку и дать этот XML в качестве фона кнопки

<?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

Установите фон @android:drawable/btn_default, чтобы получить r id прозрачности голой темы

+3

Это также изменяет графику на устройство по умолчанию (т. Е. Не голодно). – Timmmm

+2

Идеальный ответ. Благодарю. –

+0

Это идеальный ответ! Вы знаете, как применить его к другим элементам управления? (особенно в EditText) – Bronek

0

Голова прозрачности фактически встроена в файлы PNG. Таким образом, единственный реальный способ изменить это - отредактировать PNG и сделать их непрозрачными. На самом деле это не так просто. Вам нужно умножить альфа-канал изображения на 255/102. Это непросто!

Но поскольку я такой гений, я нашел способ сделать это. В основном я скопировал все соответствующие PNG и XML в свою собственную структуру каталогов (кнопки имеют только -mdpi, -hdpi и -xhdpi версий). Затем я запустил это:

для ФАЙЛА в find . -name *.png; make mogrify -evaluate Multiply 2.5-канальный Alpha $ FILE; сделано

Работа выполнена! На самом деле это не совсем сработало для отключенных кнопок по какой-то причине - я думаю, потому что центр суперпрозрачный, но мне все равно. Для этих изображений вам нужно использовать более высокое значение, чем 2,5, если вы хотите, чтобы они были полностью непрозрачными.

Anway результат here.

+0

Это отлично, но когда вы говорите «Тогда я побежал это ...», где вы запускаете этот код? – Floris

1

Я был с той же проблемой, но с ToggleButton. Уродливым, но быстрым решением было позиционирование ImageView прямо за кнопкой и изменение его margin s, background и alpha для установки кнопки. Например, внутри 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" 
    ... /> 

И, в попытке уменьшить видимый хак, извлеченный стиль:

<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> 
Смежные вопросы