Tło przycisku jako przezroczyste


177

Mam przycisk. Kiedy naciskam przycisk, muszę ustawić tekst jako pogrubiony, w przeciwnym razie normalny. Więc napisałem style dla odważnych i normalnych.

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

Teraz mam button_states.xml jako:

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

W moim układzie dla tego przycisku muszę też ustawić przezroczyste tło ... Jak to zrobić? Mój kod układu to:

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

Jak dodać przezroczyste tło do mojego stylu?


3
Tak wiele z tych dobrych odpowiedzi można już zaakceptować ...
QED,

sprawdź tę odpowiedź tutaj, aby utworzyć przezroczysty przycisk z obramowaniem
Basheer AL-MOMANI

'Dlaczego po prostu nie użyjesz TextView i nie wywołasz akcji onClick?
Dula wnRp

Odpowiedzi:


360

Aby tło było przezroczyste, po prostu zrób android:background="@android:color/transparent".

Jednak Twój problem wydaje się być nieco głębszy, ponieważ używasz selektorów w naprawdę dziwny sposób. Sposób, w jaki go używasz, wydaje się zły, chociaż jeśli faktycznie działa, powinieneś umieścić obraz tła w stylu jako plik <item/>.

Przyjrzyj się bliżej, w jaki sposób style są używane w źródle Androida. Chociaż nie zmieniają stylu tekstu po kliknięciu przycisków, jest tam wiele dobrych pomysłów, jak osiągnąć swoje cele.


1
Spójrz na moją wyjaśnioną odpowiedź. Na początek źle odczytałem twój problem. Tło zostanie ustawione w stylu.
Steve Pomeroy

Przepraszamy, nie mam jasności co do rozwiązania. Samo ustawienie @android: color / transparent nie obsługuje stylów dotykowych, które mają zwykłe przyciski (i jest równoważne ustawieniu tła na @null).
gatoatigrado

@gatoatigrado: czy masz na myśli, że chcesz, aby przezroczysty obszar był zaznaczony na pomarańczowo lub zacieniony? Jeśli tak, musisz utworzyć w tym celu niestandardowe obrazy z 9 poprawkami.
Steve Pomeroy

@StevePomeroy, tak, domyślny efekt przycisku w Androidzie 4.1 polega na tym, że [po naciśnięciu przycisku] tło będzie jasnoniebieskie z jeszcze jaśniejszym niebieskim konturem.
gatoatigrado

@gatoatigrado: ok. Jeśli tego chcesz, nie możesz użyć przezroczystego przycisku. Nie jestem pewien, co próbujesz tam osiągnąć.
Steve Pomeroy


35

użyj #0000(tylko cztery zera, w przeciwnym razie będzie uważane za black) to jest kod koloru dla przezroczystości. Możesz użyć go bezpośrednio, ale polecam zdefiniowanie koloru w color.xml, abyś mógł cieszyć się ponownym użyciem kodu.


9
Na szczęście zostało to już zdefiniowane dla nas jako@android:color/transparent
Richard Le Mesurier

34

Dodaj to do swojego 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"/>

32

Możesz również użyć: w swoim xml:

android:background="@null"

lub w kodzie:

buttonVariable.setBackgroundColor(Color.TRANSPARENT);

Głosujcie za dawaniem alternatyw, uwielbiam widzieć wszystkie opcje!
Burkely91,


9

użyłem

btn.setBackgroundColor(Color.TRANSPARENT);

i

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

btn.setBackgroundColor (Color.TRANSPARENT); dla mnie działa dobrze
jay_mziray

8

Selektory działają tylko w przypadku elementów rysunkowych, a nie stylów. Odniesienie


Po pierwsze , aby ustawić przezroczyste tło przycisku, użyj następującego atrybutu, ponieważ nie wpłynie to na animacje Material Design:

style="?attr/buttonBarButtonStyle"

Istnieje wiele sposobów stylizacji przycisku. Sprawdź ten samouczek .

Po drugie , aby pogrubić tekst po naciśnięciu, użyj tego kodu 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;
    }
});

1

Możesz to osiągnąć poprzez ustawienie kanału alfa kolorów.

Schemat kolorów jest taki jak ten #AARRGGBB, gdzie A oznacza kanał alfa (przezroczystość), R oznacza czerwony, G - zielony i B - niebieski.


1

Krok 1: Utwórz nowy plik zasobów w formie do rysowania i wklejania

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke android:color="#fff" android:width="2dp"/>
    <corners android:radius="25dp"/>
    <padding android:right="15dp" android:top="15dp" android:bottom="15dp" android:left="15dp"/>
</shape>

zapisz to jako ButtonUI (powiedzmy)

Krok 2: Zastosuj interfejs użytkownika do przycisku xml

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="join the crew"
  android:background="@drawable/ButtonUI"
  android:textColor="#fff"/>

0

Kod:

button.setVisibility(View.INVISIBLE);

XML:

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

0

Możemy użyć atrybutu android: background w Button xml jak poniżej.

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

Albo możemy użyć stylu

style="?android:attr/borderlessButtonStyle" dla przezroczystego i pozbawionego cienia tła.


-2

Kolor tła stosuje się tak samo, jak transparent(light gray)kliknięcie przycisku.

ButtonName.setOnClickListener()

W powyższej metodzie ustawiasz kolor tła przycisku.


6
Martwiąc się, że zostało to przegłosowane. Nie rób tego, proszę. Przyszły opiekun przeklnie twoje imię. Ustaw tło za pomocą selektora i miej jeden kolor / do rysowania dla wciśniętych i jeden dla nie. Nie pisz kodu, aby zmienić go w odbiorniku - NIE tak to się robi.
themightyjon

-2

Możesz to łatwo zrobić dodając poniższy atrybut w pliku xml. Ten kod był testowany dużo czasu.

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

2
Po co dodawać tę odpowiedź? To rozwiązanie jest już w dwóch innych odpowiedziach, w tym w tej z największą liczbą głosów.
Makyen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.