2011-02-10 16 views
124

Mam przycisk. Kiedy naciśniesz przycisk, muszę zrobić tekst pogrubiony, inaczej normalny. Więc napisałem style pogrubione & normalne.Tło przycisku jako przezroczyste

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

<?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ład dla tego przycisku, muszę zrobić tło jako przezroczyste zbyt ... Jak to zrobić? Mój kod układu to:

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

W jaki sposób uwzględnić tło jako przezroczyste w moim stylu?

+3

Tak wielu z tych dobrych odpowiedzi mogłoby być zaakceptowane przez teraz ... – QED

+0

check out [ta odpowiedź tutaj] (http://stackoverflow.com/questions/12856661/how-to-make-button-transparent -in-my-app-yet-visible # answer-12856901), aby zrobić przezroczysty przycisk z ramką –

+0

"dlaczego po prostu nie użyjesz TextView i wywołasz akcję w onClick of it? –

Odpowiedz

0

Po kliknięciu przycisku kolor tła zostanie zastosowany jako transparent(light gray).

ButtonName.setOnClickListener() 

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

+4

Martwisz się, że to zostało wznowione. Nie rób tego, proszę. Przyszły opiekun przeklnie twoje imię. Ustaw tło za pomocą selektora i wybierz jeden kolor/ciągnięcie dla naciśnięcia i jeden dla nie.Nie pisz kodu, aby zmienić go w słuchaczu - NIE to robi. – themightyjon

295

Aby uzyskać przezroczyste tło, po prostu wykonaj android:background="@android:color/transparent".

Jednak twój problem wydaje się być nieco głębszy, ponieważ używasz selektorów w bardzo dziwny sposób. Sposób, w jaki go używasz, wydaje się błędny, chociaż jeśli rzeczywiście działa, powinieneś umieszczać obraz tła w stylu jako <item/>.

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

+0

Już daje android: tło jako xml .. – Mathew

+1

Spójrz na moją wyjaśnioną odpowiedź. Źle odczytałem twój problem, aby rozpocząć. Tło zostanie ustawione w stylu. –

+0

+1 Świetna odpowiedź! Dziękuję za pomoc! – BlackHatSamurai

33

użyć #0000 (tylko cztery zera w przeciwnym razie będzie to uznane za black) jest to kod koloru dla przezroczystego. Możesz go użyć bezpośrednio, ale polecam Ci zdefiniowanie koloru w pliku color.xml, dzięki czemu możesz cieszyć się ponowną użytecznością kodu.

+9

Na szczęście zostało to już zdefiniowane jako "@android: color/transparent" –

28

Dodaj ten w 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"/> 
24

Można również użyć: w xml:

android:background="@null" 

lub w kodzie:

buttonVariable.setBackgroundColor(Color.TRANSPARENT); 
+0

Awansuj na alternatywę, kochaj widzieć wszystkie opcje! – Burkely91

66

Wypróbuj nowy sposób ustawiania przezroczystości tła

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

To jest to, co polecam za pomocą. W ten sposób zachowasz piękne animacje z grafiką dla swoich przycisków =) –

5

użyłem

btn.setBackgroundColor(Color.TRANSPARENT); 

i

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

Kod:

button.setVisibility(View.INVISIBLE); 

XML:

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

Można to osiągnąć, ustawiając kolory kanału alfa.

Schemat kolorów wygląda następująco: #AARRGGBB tam A oznacza kanał alfa (przezroczystość), R oznacza kolor czerwony, G oznacza zielony, a B oznacza niebieski.

1

Selektory działają tylko w przypadku rysunków, a nie stylów. Reference


Pierwszy, aby przycisk tła przezroczysty używać następujących atrybutów jak ten nie wpłynie materialne animacje projektowych:

style="?attr/buttonBarButtonStyle" 

Istnieje wiele stylizowania przycisk. Sprawdź this tutorial na zewnątrz.

drugie, aby tekst pogrubiony na wciśnięty, użyć 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; 
    } 
}); 
2

I to osiągnąć z XML z Androidem: tło = "@ android: kolor/przezroczysty"

0

Możesz to łatwo zrobić, dodając poniżej atrybut w pliku xml. Ten kod został przetestowany wystarczająco długo.

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