Фон кнопки как прозрачный

У меня есть кнопка. Когда я нажимаю кнопку, я должен сделать текст полужирным, иначе нормальным. Поэтому я написал стили для смелых и нормальных.

<style name="textbold" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
<style name="textregular" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">normal</item>
</style>

Теперь у меня есть button_states.xml как:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
    style="@style/textbold" />
<item android:state_focused="false" android:state_pressed="true"
    style="@style/textregular" />

<item style="@style/textregular" />
</selector> 

В моем макете для этой кнопки я должен сделать фон прозрачным тоже... Как я это сделаю? Мой код макета:

<Button android:id="@+id/Btn" android:background="@drawable/button_states" />

Как включить фон в качестве прозрачного в моем стиле?

Ответ 1

Чтобы сделать фон прозрачным, просто сделайте android:background="@android:color/transparent".

Однако ваша проблема, кажется, немного глубже, поскольку вы используете селектор по-настоящему странным образом. То, как вы его используете, кажется неправильным, хотя, если оно действительно работает, вы должны поместить фоновое изображение в стиле как <item/>.

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

Ответ 2

Попробуйте новый способ установить прозрачный фон

    android:background="?android:attr/selectableItemBackground"

Ответ 3

используйте #0000 (только четыре нуля в противном случае это будет считаться black), это код цвета для прозрачного. Вы можете использовать его напрямую, но я рекомендую вам определить цвет в color.xml, чтобы вы могли наслаждаться повторной полезностью кода.

Ответ 4

Вы также можете использовать: в вашем xml:

android:background="@null"

или в коде:

buttonVariable.setBackgroundColor(Color.TRANSPARENT);

Ответ 5

Добавьте это в свой Xml - android:background="@android:color/transparent"

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Button"
            android:background="@android:color/transparent"
            android:textStyle="bold"/>

Ответ 6

Я использовал

btn.setBackgroundColor(Color.TRANSPARENT);

и

android:background="@android:color/transparent"

Ответ 7

Вы можете добиться этого, установив цвет альфа-канала.

Цветовая схема выглядит так: #AARRGGBB там A обозначает альфа-канал (прозрачность), R обозначает красный, G для зеленого и B для синего.

Ответ 8

При нажатии на кнопку цвет фона используется как transparent(light gray).

ButtonName.setOnClickListener()

В приведенном выше методе вы устанавливаете цвет фона кнопки.

Ответ 9

код:

button.setVisibility(View.INVISIBLE);

Xml:

android:background="@android:color/transparent"

Ответ 10

Селекторы работают только для чертежей, а не для стилей. Ссылка


Сначала, чтобы сделать прозрачный фон кнопки, используйте следующий атрибут, так как это не повлияет на анимацию дизайна материала:

style="?attr/buttonBarButtonStyle"

Есть много, чтобы стиль вашей кнопки. Проверьте этот учебник вне.

Второй, чтобы сделать текст полужирным при нажатии, используйте этот Java-код:

btn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            // When the user clicks the Button
            case MotionEvent.ACTION_DOWN:
                btn.setTypeface(Typeface.DEFAULT_BOLD);
                break;

            // When the user releases the Button
            case MotionEvent.ACTION_UP:
                btn.setTypeface(Typeface.DEFAULT);
                break;
        }
        return false;
    }
});

Ответ 11

Я достиг этого с помощью XML с андроидом: background = "@android: color/transparent"