Android - почему из-за фонового изображения кнопки выглядят так странно?

Я пытаюсь использовать тему Android Holo.Light, и по какой-то причине, когда я добавляю фоновое изображение, кнопки выглядят очень странно и прозрачно. Вот скриншот:

введите описание изображения здесь

Кто-нибудь знает, почему это происходит? Это выглядит очень странно. Это должно быть так? Или я что-то неправильно делаю?

Когда моей темой был только Свет, то же изображение не было прозрачным.

Спасибо!


person Genadinik    schedule 03.06.2013    source источник
comment
Это происходит потому, что кнопки по умолчанию в теме Holo.Light немного прозрачны. Вы должны установить свои собственные девять патчей, чтобы убрать этот эффект.   -  person hardartcore    schedule 03.06.2013


Ответы (1)


По умолчанию кнопки Holo слегка непрозрачны. Просто установите для них фон, который можно рисовать!

Вот пример серой кнопки с контуром в 1 пиксель. Включает нажатое состояние. Вы установите это на кнопке с помощью "android: background =" @ drawable / gray_btn ":

@ drawable / gray_btn.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
    <shape>
        <solid
            android:color="#ffffff" 
            />
        <stroke
            android:width="1dp"
            android:color="#E3E3E3" />
        <corners
            android:radius="4dip" />

    </shape>
</item>
<item>
    <shape>
        <solid
            android:color="#edeff1" 
            />
        <stroke
            android:width="1dp"
            android:color="#E3E3E3" />
        <corners
            android:radius="4dip" />

    </shape>
</item>

person Jameo    schedule 03.06.2013
comment
спасибо - так это настройка, которая не делает цвет непрозрачным? Или солидная настройка? - person Genadinik; 03.06.2013
comment
Установка фона вообще сделает это. Тема автоматически применяет возможность рисования, но вы переопределите это поведение. Например, если вы установите android: background = # 00000000, он будет полностью прозрачным. Или android: background = # ffffff, было бы полностью белым. И да, основной цвет заливки - сплошной. Вы также можете делать градиенты - person Jameo; 03.06.2013
comment
Чтобы узнать, как работают темы и стили, перейдите по этой ссылке developer.android. ru / guide / themes / ui / themes.html. Также подробнее о фигуре, которую можно нарисовать здесь, developer.android.com/guide / themes / resources /. К вашему сведению, вы можете установить любой чертеж, чтобы перезаписать это, включая 9-патч - person Jameo; 03.06.2013
comment
извините, запуталась :) Что делать, чтобы кнопки не были прозрачными? Нужно ли добавлять цвет фона к кнопкам? Если да, то как будет выглядеть фрагмент, чтобы они выглядели солидно? Спасибо! - person Genadinik; 03.06.2013
comment
Мой код не работал? Настройка android: background должна делать именно это. Или, как я уже сказал, если вам нужен сплошной цвет, просто установите шестнадцатеричный цвет, как я сказал в своих комментариях выше. Если по какой-то причине это не работает, скопируйте и вставьте XML с одной из своих кнопок. - person Jameo; 03.06.2013
comment
Я все еще пытаюсь понять, где нужно разместить xml со стилем кнопки. Он попадает в каталог значений? - person Genadinik; 03.06.2013
comment
позвольте нам продолжить обсуждение в чате - person Jameo; 03.06.2013